Migrate views to Odoo 17/18 syntax; fix pre-existing XML blockers

- Convert all 124 attrs="{...}" across 13 view files to direct Odoo 17/18
  attributes (invisible/readonly/required with Python expressions); prefix-domain
  OR/AND/NOT and operators handled (e.g. "(is_overdue or days_until_due > 7) and completed")
- Fix pre-existing XML errors that blocked module load on any version:
  - Replace invalid   HTML entity with   in 4 files (reports + portal)
  - Merge duplicate style= attributes (3 spots in website_intake_templates)
  - Replace 3 illegal <t t-if> embedded in class="" attributes with t-attf-class
- All 44 module XML files now parse clean

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-29 14:15:25 +00:00
parent 6f6129550e
commit 983964c6d2
18 changed files with 156 additions and 156 deletions

View File

@@ -104,7 +104,7 @@
</tr>
<tr>
<td style="padding: 4px; font-weight: bold;">Role in Case:</td>
<td colspan="3" style="padding: 4px;">[ ] Petitioner &nbsp;&nbsp; [ ] Respondent</td>
<td colspan="3" style="padding: 4px;">[ ] Petitioner &#160;&#160; [ ] Respondent</td>
</tr>
</table>
@@ -155,8 +155,8 @@
</div>
<div style="font-size: 10pt; margin-bottom: 12px; line-height: 2.0;">
Cash on hand / bank accounts: $________<br/>
Real property (value): $________ &nbsp;&nbsp; Mortgage/lien: $________<br/>
Vehicles (value): $________ &nbsp;&nbsp; Loan balance: $________<br/>
Real property (value): $________ &#160;&#160; Mortgage/lien: $________<br/>
Vehicles (value): $________ &#160;&#160; Loan balance: $________<br/>
Other assets: $________
</div>

View File

@@ -71,7 +71,7 @@
<!-- Who is Filing -->
<div style="margin-bottom: 16px; font-size: 11pt;">
<strong>[ ] PETITIONER — <t t-esc="o.petitioner_id.name if o.petitioner_id else '__________________'"/></strong>
&nbsp;&nbsp;&nbsp;
&#160;&#160;&#160;
<strong>[ ] RESPONDENT — <t t-esc="o.respondent_id.name if o.respondent_id else '__________________'"/></strong>
</div>
@@ -244,7 +244,7 @@
The above documents were provided to
<strong><t t-esc="o.respondent_id.name if o.respondent_id else 'the opposing party'"/></strong>
by the following method:<br/><br/>
[ ] U.S. Mail &nbsp;&nbsp; [ ] Email &nbsp;&nbsp; [ ] Hand Delivery &nbsp;&nbsp; [ ] E-Filing Portal<br/>
[ ] U.S. Mail &#160;&#160; [ ] Email &#160;&#160; [ ] Hand Delivery &#160;&#160; [ ] E-Filing Portal<br/>
On: _______________________, 20____
</div>

View File

@@ -151,8 +151,8 @@
to make major decisions. Reasons: ________________________________<br/><br/>
<strong>2.2 Ultimate Decision-Making Authority (if shared, for disputes):</strong><br/>
[ ] Parent A (Petitioner) &nbsp;&nbsp; [ ] Parent B (Respondent) &nbsp;&nbsp; [ ] Mediator/Arbitrator<br/>
For: [ ] Education &nbsp;&nbsp; [ ] Healthcare &nbsp;&nbsp; [ ] Religion &nbsp;&nbsp; [ ] Extracurricular
[ ] Parent A (Petitioner) &#160;&#160; [ ] Parent B (Respondent) &#160;&#160; [ ] Mediator/Arbitrator<br/>
For: [ ] Education &#160;&#160; [ ] Healthcare &#160;&#160; [ ] Religion &#160;&#160; [ ] Extracurricular
</div>
<!-- SECTION 3: TIMESHARING -->
@@ -193,29 +193,29 @@
<strong>3.2 Holiday Schedule</strong> (indicate which parent has each holiday):<br/>
<table style="width: 100%; font-size: 10pt; border-collapse: collapse;">
<tr>
<td style="padding: 3px; width: 25%;">New Year's Day:</td><td style="padding: 3px; width: 25%;">[ ] A &nbsp; [ ] B &nbsp; [ ] Alt</td>
<td style="padding: 3px; width: 25%;">Spring Break:</td><td style="padding: 3px;">[ ] A &nbsp; [ ] B &nbsp; [ ] Alt</td>
<td style="padding: 3px; width: 25%;">New Year's Day:</td><td style="padding: 3px; width: 25%;">[ ] A &#160; [ ] B &#160; [ ] Alt</td>
<td style="padding: 3px; width: 25%;">Spring Break:</td><td style="padding: 3px;">[ ] A &#160; [ ] B &#160; [ ] Alt</td>
</tr>
<tr>
<td style="padding: 3px;">Memorial Day:</td><td style="padding: 3px;">[ ] A &nbsp; [ ] B &nbsp; [ ] Alt</td>
<td style="padding: 3px;">Independence Day:</td><td style="padding: 3px;">[ ] A &nbsp; [ ] B &nbsp; [ ] Alt</td>
<td style="padding: 3px;">Memorial Day:</td><td style="padding: 3px;">[ ] A &#160; [ ] B &#160; [ ] Alt</td>
<td style="padding: 3px;">Independence Day:</td><td style="padding: 3px;">[ ] A &#160; [ ] B &#160; [ ] Alt</td>
</tr>
<tr>
<td style="padding: 3px;">Labor Day:</td><td style="padding: 3px;">[ ] A &nbsp; [ ] B &nbsp; [ ] Alt</td>
<td style="padding: 3px;">Thanksgiving:</td><td style="padding: 3px;">[ ] A &nbsp; [ ] B &nbsp; [ ] Alt</td>
<td style="padding: 3px;">Labor Day:</td><td style="padding: 3px;">[ ] A &#160; [ ] B &#160; [ ] Alt</td>
<td style="padding: 3px;">Thanksgiving:</td><td style="padding: 3px;">[ ] A &#160; [ ] B &#160; [ ] Alt</td>
</tr>
<tr>
<td style="padding: 3px;">Winter Break (1st half):</td><td style="padding: 3px;">[ ] A &nbsp; [ ] B &nbsp; [ ] Alt</td>
<td style="padding: 3px;">Winter Break (2nd half):</td><td style="padding: 3px;">[ ] A &nbsp; [ ] B &nbsp; [ ] Alt</td>
<td style="padding: 3px;">Winter Break (1st half):</td><td style="padding: 3px;">[ ] A &#160; [ ] B &#160; [ ] Alt</td>
<td style="padding: 3px;">Winter Break (2nd half):</td><td style="padding: 3px;">[ ] A &#160; [ ] B &#160; [ ] Alt</td>
</tr>
<tr>
<td style="padding: 3px;">Mother's Day:</td><td style="padding: 3px;">[ ] A &nbsp; [ ] B &nbsp; [ ] Mother</td>
<td style="padding: 3px;">Father's Day:</td><td style="padding: 3px;">[ ] A &nbsp; [ ] B &nbsp; [ ] Father</td>
<td style="padding: 3px;">Mother's Day:</td><td style="padding: 3px;">[ ] A &#160; [ ] B &#160; [ ] Mother</td>
<td style="padding: 3px;">Father's Day:</td><td style="padding: 3px;">[ ] A &#160; [ ] B &#160; [ ] Father</td>
</tr>
</table><br/>
<strong>3.3 School Year vs. Summer Schedule:</strong><br/>
School year primary residence: [ ] Parent A &nbsp;&nbsp; [ ] Parent B &nbsp;&nbsp; [ ] Same as regular<br/>
School year primary residence: [ ] Parent A &#160;&#160; [ ] Parent B &#160;&#160; [ ] Same as regular<br/>
Summer schedule: ________________________________________<br/>
Summer vacation (each parent): ___ weeks per year, with ___ days advance notice required.
</div>
@@ -226,7 +226,7 @@
</div>
<div style="font-size: 10pt; margin-bottom: 12px; line-height: 2.2;">
Phone/video access: _____ call(s) per week, between _____ and _____ p.m.<br/>
Method: [ ] Phone &nbsp;&nbsp; [ ] Video Call (FaceTime/Zoom) &nbsp;&nbsp; [ ] Text (with parental supervision)<br/>
Method: [ ] Phone &#160;&#160; [ ] Video Call (FaceTime/Zoom) &#160;&#160; [ ] Text (with parental supervision)<br/>
Emergency contact: Each parent shall provide the other with a current phone number
and emergency contact at all times.
</div>
@@ -236,9 +236,9 @@
SECTION 5 — TRANSPORTATION / EXCHANGE
</div>
<div style="font-size: 10pt; margin-bottom: 12px; line-height: 2.2;">
Exchange location: [ ] School &nbsp;&nbsp; [ ] Neutral location: ________________________<br/>
Exchange location: [ ] School &#160;&#160; [ ] Neutral location: ________________________<br/>
[ ] Each parent provides transportation to their own home<br/>
[ ] Transporting parent: [ ] Parent A &nbsp;&nbsp; [ ] Parent B &nbsp;&nbsp; [ ] Alternate<br/>
[ ] Transporting parent: [ ] Parent A &#160;&#160; [ ] Parent B &#160;&#160; [ ] Alternate<br/>
Travel out of state: _____ days advance notice required, written consent or court order required for travel outside U.S.
</div>

View File

@@ -40,26 +40,26 @@
</group>
</group>
<div class="alert alert-danger" role="alert"
attrs="{'invisible': [('attorney_referral_flag', '=', False)]}">
invisible="not attorney_referral_flag">
<strong>⚠️ ATTORNEY REFERRAL RECOMMENDED</strong><br/>
<field name="attorney_referral_reason" readonly="1" nolabel="1"/>
</div>
<separator string="Strategy Memo"
attrs="{'invisible': [('analysis_type', '!=', 'attorney')]}"/>
invisible="analysis_type != 'attorney'"/>
<field name="strategy_memo" widget="html" readonly="1" nolabel="1"
attrs="{'invisible': [('analysis_type', '!=', 'attorney')]}"/>
invisible="analysis_type != 'attorney'"/>
<separator string="Risk Narrative"
attrs="{'invisible': [('risk_narrative', '=', False)]}"/>
invisible="not risk_narrative"/>
<field name="risk_narrative" readonly="1" nolabel="1"
attrs="{'invisible': [('risk_narrative', '=', False)]}"/>
invisible="not risk_narrative"/>
<separator string="Plain English Summary (English)"/>
<field name="plain_english_summary" readonly="1" nolabel="1"/>
<separator string="Plain English Summary (Español)"/>
<field name="plain_english_summary_es" readonly="1" nolabel="1"/>
<separator string="Cited Statutes"
attrs="{'invisible': [('cited_statute_ids', '=', [])]}"/>
invisible="not cited_statute_ids"/>
<field name="cited_statute_ids" widget="many2many_tags" readonly="1" nolabel="1"
attrs="{'invisible': [('cited_statute_ids', '=', [])]}"/>
invisible="not cited_statute_ids"/>
<separator string="Matched Case Law"/>
<field name="matched_caselaw_ids" widget="many2many_tags" readonly="1" nolabel="1"/>
</sheet>

View File

@@ -17,7 +17,7 @@
groups="activeblue_familylaw.group_admin,activeblue_familylaw.group_paralegal"/>
<button name="action_open_support_calculator" string="Open Calculator"
type="object"
attrs="{'invisible': [('case_type', 'not in', ['modification','dissolution_children','paternity','custody_modification'])]}"/>
invisible="case_type not in ['modification', 'dissolution_children', 'paternity', 'custody_modification']"/>
<button name="action_run_conflict_check" string="Run Conflict Check"
type="object"
groups="activeblue_familylaw.group_admin,activeblue_familylaw.group_paralegal"/>
@@ -31,7 +31,7 @@
<!-- Attorney Referral Banner -->
<div class="alert alert-danger" role="alert"
attrs="{'invisible': [('attorney_referral_flag', '=', False)]}">
invisible="not attorney_referral_flag">
<strong>⚠️ ATTORNEY REFERRAL RECOMMENDED</strong>
— This case has been flagged as complex or high-risk for pro se representation.
Strongly consider consulting with a family law attorney.
@@ -40,7 +40,7 @@
<!-- Conflict of Interest Banner -->
<div class="alert alert-danger" role="alert"
attrs="{'invisible': ['|', ('conflict_check_passed', '=', True), ('conflict_check_id', '=', False)]}">
invisible="(conflict_check_passed or not conflict_check_id)">
<strong>🚩 CONFLICT OF INTEREST — UNRESOLVED</strong>
— A conflict check has flagged matching parties on other open cases.
This case cannot advance past Intake until the conflict is overridden by an administrator.
@@ -52,7 +52,7 @@
<!-- DV Safety Note -->
<field name="dv_safety_note" widget="html"
attrs="{'invisible': [('domestic_violence_flag', '=', False)]}"/>
invisible="not domestic_violence_flag"/>
<sheet>
<div class="oe_button_box" name="button_box">
@@ -62,7 +62,7 @@
</button>
<button class="oe_stat_button" type="object"
name="action_open_support_calculator" icon="fa-calculator"
attrs="{'invisible': [('case_type', 'not in', ['modification','dissolution_children','paternity','custody_modification'])]}">
invisible="case_type not in ['modification', 'dissolution_children', 'paternity', 'custody_modification']">
<span class="o_stat_text">Calculator</span>
</button>
</div>
@@ -89,11 +89,11 @@
<field name="filing_date"/>
<field name="service_date"/>
<field name="last_order_date"
attrs="{'invisible': [('case_type', 'not in', ['modification','alimony_modification','custody_modification'])]}"/>
invisible="case_type not in ['modification', 'alimony_modification', 'custody_modification']"/>
<field name="marriage_date"
attrs="{'invisible': [('case_type', 'not in', ['dissolution_children','dissolution_no_children','alimony_modification'])]}"/>
invisible="case_type not in ['dissolution_children', 'dissolution_no_children', 'alimony_modification']"/>
<field name="years_of_marriage"
attrs="{'invisible': [('case_type', 'not in', ['dissolution_children','dissolution_no_children','alimony_modification'])]}"/>
invisible="case_type not in ['dissolution_children', 'dissolution_no_children', 'alimony_modification']"/>
<field name="retroactivity_date" readonly="1"/>
</group>
</group>
@@ -109,7 +109,7 @@
placeholder="Leave blank if pro se"/>
<field name="petitioner_fl_resident_since"/>
<field name="residency_warning" readonly="1"
attrs="{'invisible': [('petitioner_fl_resident_since', '=', False)]}"/>
invisible="not petitioner_fl_resident_since"/>
</group>
<group string="Respondent">
<field name="respondent_id"/>
@@ -122,7 +122,7 @@
<group string="Safety Flags">
<field name="domestic_violence_flag"/>
<field name="dv_injunction_active"
attrs="{'invisible': [('domestic_violence_flag', '=', False)]}"/>
invisible="not domestic_violence_flag"/>
</group>
<group string="Conflict of Interest">
<field name="conflict_check_passed" readonly="1"/>
@@ -144,27 +144,27 @@
<!-- TAB 2: Children -->
<page string="Children" name="children"
attrs="{'invisible': [('case_type', 'in', ['dissolution_no_children','alimony_modification'])]}">
invisible="case_type in ['dissolution_no_children', 'alimony_modification']">
<group>
<field name="children_count" readonly="1"/>
<field name="has_minor_children" readonly="1"/>
</group>
<separator string="Parenting Class (FL 61.21)"
attrs="{'invisible': [('parenting_class_required', '=', False)]}"/>
<group attrs="{'invisible': [('parenting_class_required', '=', False)]}">
invisible="not parenting_class_required"/>
<group invisible="not parenting_class_required">
<group>
<field name="petitioner_parenting_class_done"/>
<field name="petitioner_parenting_class_date"
attrs="{'invisible': [('petitioner_parenting_class_done', '=', False)]}"/>
invisible="not petitioner_parenting_class_done"/>
</group>
<group>
<field name="respondent_parenting_class_done"/>
<field name="respondent_parenting_class_date"
attrs="{'invisible': [('respondent_parenting_class_done', '=', False)]}"/>
invisible="not respondent_parenting_class_done"/>
</group>
</group>
<field name="parenting_class_warning" readonly="1"
attrs="{'invisible': [('parenting_class_required', '=', False)]}"/>
invisible="not parenting_class_required"/>
<separator string="Children on Case"/>
<field name="child_ids">
<tree string="Children" editable="bottom">
@@ -181,7 +181,7 @@
<!-- TAB 3: Support & Threshold -->
<page string="Support Calculation" name="support"
attrs="{'invisible': [('case_type', 'not in', ['modification','dissolution_children','paternity','custody_modification'])]}">
invisible="case_type not in ['modification', 'dissolution_children', 'paternity', 'custody_modification']">
<group string="Current Order">
<field name="current_order_amount"/>
<field name="current_order_per_child"/>
@@ -195,18 +195,18 @@
string="Difference %" widget="percentage"/>
</group>
<group string="Modification Threshold Test (FL 61.30(1)(b))"
attrs="{'invisible': [('case_type', '!=', 'modification')]}">
invisible="case_type != 'modification'">
<field name="threshold_met" readonly="1"/>
<field name="substantial_change_basis"/>
<field name="substantial_change_detail"/>
</group>
<field name="threshold_result" widget="html" readonly="1"
attrs="{'invisible': [('case_type', '!=', 'modification')]}"/>
invisible="case_type != 'modification'"/>
</page>
<!-- TAB 4: Timesharing -->
<page string="Timesharing" name="timesharing"
attrs="{'invisible': [('case_type', 'not in', ['modification','dissolution_children','paternity','custody_modification'])]}">
invisible="case_type not in ['modification', 'dissolution_children', 'paternity', 'custody_modification']">
<group>
<group>
<field name="timesharing_changed"/>
@@ -275,11 +275,11 @@
type="object" class="btn-primary"
groups="activeblue_familylaw.group_admin"/>
<field name="attorney_memo_id" readonly="1"
attrs="{'invisible': [('attorney_memo_id', '=', False)]}"/>
invisible="not attorney_memo_id"/>
<field name="attorney_memo_html" widget="html" readonly="1" nolabel="1"
attrs="{'invisible': [('attorney_memo_id', '=', False)]}"/>
invisible="not attorney_memo_id"/>
<field name="attorney_risk_narrative" readonly="1"
attrs="{'invisible': [('attorney_memo_id', '=', False)]}"/>
invisible="not attorney_memo_id"/>
<separator string="All Analyses"/>
<field name="analysis_ids">
<tree string="Analyses">
@@ -302,7 +302,7 @@
<button name="action_create_fee_waiver"
string="Create Fee Waiver Application"
type="object" class="btn-secondary"
attrs="{'invisible': [('fee_waiver_id', '!=', False)]}"/>
invisible="fee_waiver_id"/>
</group>
<group string="Post-Order">
<field name="new_order_amount"/>
@@ -403,7 +403,7 @@
<field name="next_deadline_label" string="Next Deadline"/>
<field name="overdue_deadline_count" string="Overdue"/>
<field name="threshold_met"
attrs="{'invisible': [('case_type', '!=', 'modification')]}"/>
invisible="case_type != 'modification'"/>
<field name="attorney_referral_flag" widget="boolean_toggle"/>
<field name="domestic_violence_flag" widget="boolean_toggle"/>
</tree>

View File

@@ -24,7 +24,7 @@
<form string="Case Law">
<sheet>
<div class="alert alert-warning" role="alert"
attrs="{'invisible': [('superseded_by_2023_reform', '=', False)]}">
invisible="not superseded_by_2023_reform">
<strong>⚠️ NOTE:</strong> This case involves permanent alimony
which was <strong>eliminated by HB 1409 (effective July 1, 2023)</strong>.
Pre-2023 permanent alimony holdings may not apply to new cases.

View File

@@ -8,7 +8,7 @@
<field name="arch" type="xml">
<form string="Child">
<div class="alert alert-warning" role="alert"
attrs="{'invisible': [('approaching_emancipation', '=', False)]}">
invisible="not approaching_emancipation">
<strong>⚠️ APPROACHING EMANCIPATION:</strong>
<field name="name" readonly="1"/> turns 18 in
<field name="days_until_emancipation" readonly="1"/> days

View File

@@ -14,24 +14,24 @@
<button name="action_override" string="Override Conflict"
type="object" class="oe_highlight"
confirm="Override this conflict of interest? This allows the case to advance past Intake. A justification is required."
attrs="{'invisible': [('status', '!=', 'conflict')]}"
invisible="status != 'conflict'"
groups="activeblue_familylaw.group_admin"/>
<field name="status" widget="statusbar"
statusbar_visible="clear,conflict,override"/>
</header>
<sheet>
<div class="alert alert-success" role="alert"
attrs="{'invisible': [('status', '!=', 'clear')]}">
invisible="status != 'clear'">
<strong>✅ CLEAR</strong> — No conflicting parties found on other open cases.
</div>
<div class="alert alert-danger" role="alert"
attrs="{'invisible': [('status', '!=', 'conflict')]}">
invisible="status != 'conflict'">
<strong>🚩 CONFLICT DETECTED</strong> — One or more parties match
parties on other open cases. The case cannot advance past Intake
until this is overridden by an administrator.
</div>
<div class="alert alert-warning" role="alert"
attrs="{'invisible': [('status', '!=', 'override')]}">
invisible="status != 'override'">
<strong>⚠ OVERRIDDEN</strong> — This conflict was overridden by
<field name="override_user_id" readonly="1" nolabel="1" class="oe_inline"/>
on <field name="override_date" readonly="1" nolabel="1" class="oe_inline"/>.
@@ -43,16 +43,16 @@
</group>
<group>
<field name="matched_case_ids" widget="many2many_tags"
attrs="{'invisible': [('matched_case_ids', '=', [])]}"/>
invisible="not matched_case_ids"/>
</group>
</group>
<separator string="Match Detail"/>
<field name="match_detail" nolabel="1" readonly="1"/>
<separator string="Override Justification"
attrs="{'invisible': [('status', '=', 'clear')]}"/>
invisible="status == 'clear'"/>
<field name="override_justification" nolabel="1"
placeholder="Required to override a conflict — explain why the firm may proceed despite the match."
attrs="{'invisible': [('status', '=', 'clear')], 'readonly': [('status', '=', 'override')]}"/>
invisible="status == 'clear'" readonly="status == 'override'"/>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids"/>

View File

@@ -19,14 +19,14 @@
<field name="deadline_type"/>
<field name="due_date"/>
<field name="days_until_due" string="Days Left"
attrs="{'invisible': [('completed', '=', True)]}"/>
invisible="completed"/>
<field name="statute_reference" optional="show"/>
<field name="completed"/>
<field name="waived"/>
<field name="is_overdue" readonly="1"/>
<button name="action_mark_complete" string="✔ Complete"
type="object" icon="fa-check"
attrs="{'invisible': ['|', ('completed', '=', True), ('waived', '=', True)]}"/>
invisible="(completed or waived)"/>
</tree>
</field>
</record>
@@ -42,28 +42,28 @@
<header>
<button name="action_mark_complete" string="Mark Complete"
type="object" class="oe_highlight"
attrs="{'invisible': ['|', ('completed', '=', True), ('waived', '=', True)]}"/>
invisible="(completed or waived)"/>
<button name="action_mark_waived" string="Mark Waived / N/A"
type="object"
attrs="{'invisible': ['|', ('completed', '=', True), ('waived', '=', True)]}"/>
invisible="(completed or waived)"/>
</header>
<sheet>
<!-- Overdue alert banner -->
<div class="alert alert-danger" role="alert"
attrs="{'invisible': [('is_overdue', '=', False)]}">
invisible="not is_overdue">
<strong>🔴 OVERDUE</strong> — This deadline has passed.
Missed court deadlines can result in default judgment
or case dismissal. Take action immediately.
</div>
<!-- 7-day warning banner -->
<div class="alert alert-warning" role="alert"
attrs="{'invisible': ['|', ('is_overdue', '=', True), ('days_until_due', '&gt;', 7), ('completed', '=', True)]}">
invisible="(is_overdue or days_until_due &gt; 7) and completed">
<strong>⏰ Due in ${days_until_due} days</strong>
This deadline is coming up soon.
</div>
<!-- Completed banner -->
<div class="alert alert-success" role="alert"
attrs="{'invisible': [('completed', '=', False)]}">
invisible="not completed">
<strong>✅ Completed</strong> on
<field name="completed_date" readonly="1" nolabel="1"/>
</div>
@@ -86,12 +86,12 @@
<group>
<field name="completed"/>
<field name="completed_date"
attrs="{'invisible': [('completed', '=', False)], 'required': [('completed', '=', True)]}"/>
invisible="not completed" required="completed"/>
</group>
<group>
<field name="waived"/>
<field name="calendar_event_id" readonly="1"
attrs="{'invisible': [('calendar_event_id', '=', False)]}"/>
invisible="not calendar_event_id"/>
</group>
</group>
<group string="Alerts Sent" groups="activeblue_familylaw.group_admin">

View File

@@ -20,7 +20,7 @@
<field name="notice_date"/>
<field name="scheduled_date"/>
<field name="days_until_deposition" string="Days Away"
attrs="{'invisible': [('state', 'in', ['completed', 'cancelled'])]}"/>
invisible="state in ['completed', 'cancelled']"/>
<field name="notice_valid" string="Notice OK" optional="show"/>
<field name="state" widget="badge"
decoration-success="state == 'completed'"
@@ -44,24 +44,24 @@
<header>
<button name="action_mark_noticed" string="Mark Notice Served"
type="object" class="oe_highlight"
attrs="{'invisible': [('state', '!=', 'draft')]}"/>
invisible="state != 'draft'"/>
<button name="action_confirm" string="Confirm"
type="object"
attrs="{'invisible': [('state', '!=', 'noticed')]}"/>
invisible="state != 'noticed'"/>
<button name="action_mark_completed" string="Mark Completed"
type="object" class="oe_highlight"
attrs="{'invisible': [('state', 'not in', ['confirmed', 'noticed'])]}"/>
invisible="state not in ['confirmed', 'noticed']"/>
<button name="action_no_show" string="Deponent No-Show"
type="object"
confirm="Mark this deponent as a no-show? This will trigger the Motion to Compel workflow."
attrs="{'invisible': [('state', 'not in', ['confirmed', 'noticed'])]}"/>
invisible="state not in ['confirmed', 'noticed']"/>
<button name="action_reschedule" string="Reschedule"
type="object"
attrs="{'invisible': [('state', 'not in', ['draft', 'noticed', 'confirmed'])]}"/>
invisible="state not in ['draft', 'noticed', 'confirmed']"/>
<button name="action_cancel" string="Cancel"
type="object"
confirm="Cancel this deposition?"
attrs="{'invisible': [('state', 'in', ['completed', 'cancelled'])]}"/>
invisible="state in ['completed', 'cancelled']"/>
<field name="state" widget="statusbar"
statusbar_visible="draft,noticed,confirmed,completed"/>
</header>
@@ -74,18 +74,18 @@
<!-- Notice validity warning -->
<div class="alert alert-warning" role="alert"
attrs="{'invisible': ['|', ('notice_valid', '=', True), ('notice_date', '=', False), ('scheduled_date', '=', False)]}">
invisible="(notice_valid or not notice_date) and not scheduled_date">
<strong>⚠️ INSUFFICIENT NOTICE</strong>
<field name="notice_warning" readonly="1" nolabel="1"/>
</div>
<div class="alert alert-success" role="alert"
attrs="{'invisible': ['|', ('notice_valid', '=', False), ('notice_date', '=', False)]}">
invisible="(not notice_valid or not notice_date)">
<field name="notice_warning" readonly="1" nolabel="1"/>
</div>
<!-- No-Show alert -->
<div class="alert alert-danger" role="alert"
attrs="{'invisible': [('state', '!=', 'no_show')]}">
invisible="state != 'no_show'">
<strong>⚠️ DEPONENT NO-SHOW</strong> — File Motion to Compel
Attendance (FL 1.380). Check the Deadlines tab for the deadline.
You may also request sanctions under FL 1.380(b)(2).
@@ -93,9 +93,9 @@
<!-- Completed summary -->
<div class="alert alert-success" role="alert"
attrs="{'invisible': [('state', '!=', 'completed')]}">
invisible="state != 'completed'">
<strong>✅ Deposition Completed</strong>
<span attrs="{'invisible': [('income_verified', '=', False)]}">
<span invisible="not income_verified">
— Income verified at
<field name="income_verified_amount" readonly="1" nolabel="1"/> /month
</span>
@@ -121,7 +121,7 @@
<field name="location"/>
<field name="court_reporter"/>
<field name="calendar_event_id" readonly="1"
attrs="{'invisible': [('calendar_event_id', '=', False)]}"/>
invisible="not calendar_event_id"/>
</group>
</group>
@@ -129,29 +129,29 @@
<group string="Duces Tecum — Document Production Requirement">
<field name="duces_tecum"/>
<field name="duces_tecum_items"
attrs="{'invisible': [('duces_tecum', '=', False)], 'required': [('duces_tecum', '=', True)]}"
invisible="not duces_tecum" required="duces_tecum"
placeholder="List documents deponent must bring to the deposition:&#10;- Last 3 years federal/state tax returns&#10;- Last 6 months paystubs&#10;- All bank statements last 12 months&#10;- Business financial statements&#10;- Corporate tax returns&#10;- Quickbooks / accounting records"/>
</group>
<!-- Results (shown when completed) -->
<group string="Results / Findings"
attrs="{'invisible': [('state', 'not in', ['completed', 'no_show'])]}">
invisible="state not in ['completed', 'no_show']">
<field name="income_verified"/>
<field name="income_verified_amount"
attrs="{'invisible': [('income_verified', '=', False)]}"/>
invisible="not income_verified"/>
<field name="transcript_received"/>
</group>
<field name="key_findings"
attrs="{'invisible': [('state', 'not in', ['completed'])]}"
invisible="state not in ['completed']"
placeholder="Summarize key testimony: income figures, contradictions, admissions, document admissions..."/>
<!-- Motion to Compel (no-show only) -->
<group string="Motion to Compel (FL 1.380)"
attrs="{'invisible': [('state', '!=', 'no_show')]}">
invisible="state != 'no_show'">
<field name="motion_to_compel_filed"/>
<field name="motion_to_compel_date"
attrs="{'invisible': [('motion_to_compel_filed', '=', False)]}"/>
invisible="not motion_to_compel_filed"/>
<field name="sanctions_requested"/>
</group>

View File

@@ -18,12 +18,12 @@
<field name="discovery_type"/>
<field name="directed_to"/>
<field name="third_party_id"
attrs="{'invisible': [('directed_to', '!=', 'third_party')]}"/>
invisible="directed_to != 'third_party'"/>
<field name="description"/>
<field name="served_date"/>
<field name="response_due_date"/>
<field name="days_until_response" string="Days Left"
attrs="{'invisible': [('state', 'in', ['draft', 'responded', 'complete'])]}"/>
invisible="state in ['draft', 'responded', 'complete']"/>
<field name="is_overdue" string="Overdue"/>
<field name="admissions_deemed" string="Deemed Admitted" optional="show"/>
<field name="state" widget="badge"
@@ -33,13 +33,13 @@
decoration-muted="state == 'draft'"/>
<button name="action_mark_served" string="Served" type="object"
icon="fa-paper-plane"
attrs="{'invisible': [('state', '!=', 'draft')]}"/>
invisible="state != 'draft'"/>
<button name="action_mark_responded" string="Responded" type="object"
icon="fa-check"
attrs="{'invisible': [('state', '!=', 'served')]}"/>
invisible="state != 'served'"/>
<button name="action_file_motion_to_compel" string="Compel"
type="object" icon="fa-gavel"
attrs="{'invisible': [('state', 'not in', ['served', 'deficient'])]}"/>
invisible="state not in ['served', 'deficient']"/>
</tree>
</field>
</record>
@@ -55,20 +55,20 @@
<header>
<button name="action_mark_served" string="Mark Served"
type="object" class="oe_highlight"
attrs="{'invisible': [('state', '!=', 'draft')]}"/>
invisible="state != 'draft'"/>
<button name="action_mark_responded" string="Response Received"
type="object"
attrs="{'invisible': [('state', '!=', 'served')]}"/>
invisible="state != 'served'"/>
<button name="action_flag_deficient" string="Flag Deficient"
type="object"
attrs="{'invisible': [('state', '!=', 'responded')]}"/>
invisible="state != 'responded'"/>
<button name="action_file_motion_to_compel"
string="File Motion to Compel (FL 1.380)"
type="object"
attrs="{'invisible': [('state', 'not in', ['served', 'deficient'])]}"/>
invisible="state not in ['served', 'deficient']"/>
<button name="action_mark_complete" string="Mark Complete"
type="object"
attrs="{'invisible': [('state', 'in', ['draft', 'complete'])]}"/>
invisible="state in ['draft', 'complete']"/>
<field name="state" widget="statusbar"
statusbar_visible="draft,served,responded,complete"/>
</header>
@@ -76,7 +76,7 @@
<!-- Deemed Admitted Alert (FL 1.370) — CRITICAL -->
<div class="alert alert-danger" role="alert"
attrs="{'invisible': [('admissions_deemed', '=', False)]}">
invisible="not admissions_deemed">
<strong>🚨 FL 1.370 — ADMISSIONS DEEMED ADMITTED</strong><br/>
No response was filed within 30 days. Each matter in this
Request for Admissions is <strong>automatically deemed admitted</strong>
@@ -87,7 +87,7 @@
<!-- Overdue response alert -->
<div class="alert alert-warning" role="alert"
attrs="{'invisible': ['|', ('is_overdue', '=', False), ('admissions_deemed', '=', True)]}">
invisible="(not is_overdue or admissions_deemed)">
<strong>⏰ Response OVERDUE</strong> — Was due
<field name="response_due_date" readonly="1" nolabel="1"/>.
Consider sending a deficiency notice, then filing
@@ -96,7 +96,7 @@
<!-- Complete badge -->
<div class="alert alert-success" role="alert"
attrs="{'invisible': [('state', '!=', 'complete')]}">
invisible="state != 'complete'">
<strong>✅ Discovery Item Complete</strong>
</div>
@@ -106,14 +106,14 @@
<field name="discovery_type"/>
<field name="directed_to"/>
<field name="third_party_id"
attrs="{'invisible': [('directed_to', '!=', 'third_party')], 'required': [('directed_to', '=', 'third_party')]}"/>
invisible="directed_to != 'third_party'" required="directed_to == 'third_party'"/>
<field name="description"/>
</group>
<group string="Timeline">
<field name="served_date"/>
<field name="response_due_date" readonly="1"/>
<field name="days_until_response" readonly="1"
attrs="{'invisible': [('state', 'in', ['draft', 'responded', 'complete'])]}"/>
invisible="state in ['draft', 'responded', 'complete']"/>
<field name="is_overdue" readonly="1"/>
<field name="response_received_date"/>
<field name="response_complete"/>
@@ -122,7 +122,7 @@
<!-- Subpoena info (third party) -->
<group string="Subpoena Information (FL 1.351)"
attrs="{'invisible': [('discovery_type', '!=', 'subpoena')]}">
invisible="discovery_type != 'subpoena'">
<div class="alert alert-info" role="alert">
<strong>FL 1.351 Subpoena for Production:</strong>
Third party must respond within the time stated in the subpoena
@@ -134,7 +134,7 @@
<!-- Admissions specific note -->
<group string="Admissions (FL 1.370) — WARNING"
attrs="{'invisible': [('discovery_type', '!=', 'admissions')]}">
invisible="discovery_type != 'admissions'">
<div class="alert alert-warning" role="alert">
<strong>FL 1.370 Critical Rule:</strong>
If the responding party <strong>fails to respond within 30 days</strong>,
@@ -149,14 +149,14 @@
<group string="Objections / Deficiencies">
<field name="objections_raised"/>
<field name="objection_detail"
attrs="{'invisible': [('objections_raised', '=', False)]}"/>
invisible="not objections_raised"/>
<field name="deficiency_notice_sent"/>
<field name="deficiency_notice_date"
attrs="{'invisible': [('deficiency_notice_sent', '=', False)]}"/>
invisible="not deficiency_notice_sent"/>
</group>
<group string="Motion to Compel (FL 1.380)"
attrs="{'invisible': [('state', '!=', 'compelled')]}">
invisible="state != 'compelled'">
<field name="motion_to_compel_filed" readonly="1"/>
<field name="motion_to_compel_date" readonly="1"/>
<field name="sanctions_requested"/>

View File

@@ -13,34 +13,34 @@
<header>
<button name="action_validate_pdfa" string="Validate PDF/A"
type="object" class="oe_highlight"
attrs="{'invisible': [('status', 'not in', ['draft','validated'])]}"/>
invisible="status not in ['draft', 'validated']"/>
<button name="action_open_portal" string="Open e-Filing Portal"
type="object"
attrs="{'invisible': [('status', 'in', ['accepted','rejected'])]}"/>
invisible="status in ['accepted', 'rejected']"/>
<button name="action_record_confirmation" string="Mark Submitted"
type="object"
attrs="{'invisible': [('status', 'not in', ['pending_manual','validated','failed'])]}"/>
invisible="status not in ['pending_manual', 'validated', 'failed']"/>
<button name="action_mark_accepted" string="Clerk Accepted"
type="object" class="oe_highlight"
attrs="{'invisible': [('status', '!=', 'submitted')]}"/>
invisible="status != 'submitted'"/>
<button name="action_mark_rejected" string="Clerk Rejected"
type="object"
attrs="{'invisible': [('status', '!=', 'submitted')]}"/>
invisible="status != 'submitted'"/>
<button name="action_submit_api" string="Submit via API"
type="object"
groups="activeblue_familylaw.group_admin"
attrs="{'invisible': [('status', 'in', ['accepted','rejected','submitted'])]}"/>
invisible="status in ['accepted', 'rejected', 'submitted']"/>
<field name="status" widget="statusbar"
statusbar_visible="draft,validated,pending_manual,submitted,accepted"/>
</header>
<sheet>
<div class="alert alert-success" role="alert"
attrs="{'invisible': [('pdfa_valid', '=', False)]}">
invisible="not pdfa_valid">
<strong>✅ PDF/A:</strong>
<field name="pdfa_message" readonly="1" nolabel="1" class="oe_inline"/>
</div>
<div class="alert alert-warning" role="alert"
attrs="{'invisible': ['|', ('pdfa_valid', '=', True), ('pdfa_message', '=', False)]}">
invisible="(pdfa_valid or not pdfa_message)">
<strong>⚠️ PDF/A:</strong>
<field name="pdfa_message" readonly="1" nolabel="1" class="oe_inline"/>
</div>
@@ -62,7 +62,7 @@
</group>
</group>
<field name="error_message" readonly="1"
attrs="{'invisible': [('error_message', '=', False)]}"/>
invisible="not error_message"/>
<separator string="Notes"/>
<field name="notes" nolabel="1"
placeholder="Clerk rejection reasons, filing remarks, etc."/>

View File

@@ -10,26 +10,26 @@
<header>
<button name="action_submit" string="Submit to Clerk"
type="object" class="oe_highlight"
attrs="{'invisible': [('state', '!=', 'draft')]}"/>
invisible="state != 'draft'"/>
<button name="action_approve" string="Approved"
type="object"
attrs="{'invisible': [('state', '!=', 'submitted')]}"
invisible="state != 'submitted'"
groups="activeblue_familylaw.group_admin"/>
<button name="action_deny" string="Denied"
type="object"
attrs="{'invisible': [('state', '!=', 'submitted')]}"
invisible="state != 'submitted'"
groups="activeblue_familylaw.group_admin"/>
<field name="state" widget="statusbar"/>
</header>
<sheet>
<div class="alert alert-success" role="alert"
attrs="{'invisible': [('eligible', '=', False)]}">
invisible="not eligible">
<strong>✅ ELIGIBLE</strong><field name="eligibility_note" readonly="1" nolabel="1"/>
<br/>This applicant may also qualify for a
<strong>free county mediator</strong> under FL 44.108.
</div>
<div class="alert alert-warning" role="alert"
attrs="{'invisible': [('eligible', '=', True)]}">
invisible="eligible">
<field name="eligibility_note" readonly="1" nolabel="1"/>
</div>
<group>
@@ -51,11 +51,11 @@
<field name="mediator_fee_waiver_eligible" readonly="1"/>
</group>
<group string="Outcome"
attrs="{'invisible': [('state', 'in', ['draft', 'submitted'])]}">
invisible="state in ['draft', 'submitted']">
<field name="approval_date"
attrs="{'invisible': [('state', '!=', 'approved')]}"/>
invisible="state != 'approved'"/>
<field name="denial_reason"
attrs="{'invisible': [('state', '!=', 'denied')]}"/>
invisible="state != 'denied'"/>
</group>
<field name="notes"/>
</sheet>

View File

@@ -41,37 +41,37 @@
<header>
<button name="action_mark_completed" string="Mark Completed"
type="object" class="oe_highlight"
attrs="{'invisible': [('state', '!=', 'scheduled')]}"/>
invisible="state != 'scheduled'"/>
<button name="action_mark_continued" string="Mark Continued"
type="object"
attrs="{'invisible': [('state', '!=', 'scheduled')]}"/>
invisible="state != 'scheduled'"/>
<button name="action_cancel" string="Cancel Hearing"
type="object" confirm="Cancel this hearing? This cannot be undone."
attrs="{'invisible': [('state', 'not in', ['scheduled', 'continued'])]}"/>
invisible="state not in ['scheduled', 'continued']"/>
<field name="state" widget="statusbar"
statusbar_visible="scheduled,completed,cancelled,continued"/>
</header>
<sheet>
<!-- Outcome section — shown after completion -->
<div class="alert alert-success" role="alert"
attrs="{'invisible': [('state', '!=', 'completed')]}">
invisible="state != 'completed'">
<strong>✅ Hearing Completed</strong>
<span attrs="{'invisible': [('outcome', '=', False)]}">
<span invisible="not outcome">
<field name="outcome" readonly="1" nolabel="1"/>
</span>
<span attrs="{'invisible': [('outcome', '!=', False)]}">
<span invisible="outcome">
— Update the Outcome field below with the judge's ruling.
</span>
</div>
<!-- Continued notice -->
<div class="alert alert-warning" role="alert"
attrs="{'invisible': [('state', '!=', 'continued')]}">
invisible="state != 'continued'">
<strong>⏸️ Hearing Continued</strong> — Contact the court for
the rescheduled date and create a new hearing record.
</div>
<!-- Cancelled notice -->
<div class="alert alert-danger" role="alert"
attrs="{'invisible': [('state', '!=', 'cancelled')]}">
invisible="state != 'cancelled'">
<strong>❌ Hearing Cancelled</strong>
</div>
@@ -88,7 +88,7 @@
<field name="courtroom"/>
<field name="judge_id"/>
<field name="calendar_event_id" readonly="1"
attrs="{'invisible': [('calendar_event_id', '=', False)]}"/>
invisible="not calendar_event_id"/>
</group>
</group>
@@ -116,7 +116,7 @@
<!-- Outcome (visible after hearing) -->
<group string="Outcome"
attrs="{'invisible': [('state', 'not in', ['completed', 'continued'])]}">
invisible="state not in ['completed', 'continued']">
<field name="order_entered"/>
<field name="outcome" placeholder="Describe the judge's ruling, any orders entered, next steps..."/>
</group>

View File

@@ -58,17 +58,17 @@
<group>
<field name="income_imputed"/>
<field name="imputed_amount"
attrs="{'invisible': [('income_imputed', '=', False)]}"/>
invisible="not income_imputed"/>
<field name="fl_minimum_wage_hourly"/>
<field name="fl_minimum_wage_monthly" readonly="1"/>
<field name="imputation_basis"
attrs="{'invisible': [('income_imputed', '=', False)]}"/>
invisible="not income_imputed"/>
</group>
<separator string="Lifestyle Analysis (Barner v. Barner)"/>
<group>
<field name="lifestyle_inconsistency_flag"/>
<field name="lifestyle_notes"
attrs="{'invisible': [('lifestyle_inconsistency_flag', '=', False)]}"/>
invisible="not lifestyle_inconsistency_flag"/>
</group>
</page>
<page string="Service &amp; SSN">
@@ -77,7 +77,7 @@
<field name="service_address"/>
<field name="service_method"/>
<field name="process_server_id"
attrs="{'invisible': [('service_method', '!=', 'personal')]}"/>
invisible="service_method != 'personal'"/>
</group>
<group string="SSN (FL-12.930(a))">
<field name="ssn_last4"/>
@@ -86,7 +86,7 @@
</group>
</group>
<div class="alert alert-warning" role="alert"
attrs="{'invisible': [('service_method', '!=', 'publication')]}">
invisible="service_method != 'publication'">
<strong>⚠️ Service by Publication</strong> is the most complex
service method and requires a diligent search affidavit.
Attorney representation is strongly recommended.

View File

@@ -87,11 +87,11 @@
<group>
<field name="deviation_requested"/>
<field name="deviation_reason"
attrs="{'invisible': [('deviation_requested', '=', False)]}"/>
invisible="not deviation_requested"/>
<field name="deviation_amount"
attrs="{'invisible': [('deviation_requested', '=', False)]}"/>
invisible="not deviation_requested"/>
<field name="final_amount_with_deviation" readonly="1"
attrs="{'invisible': [('deviation_requested', '=', False)]}"/>
invisible="not deviation_requested"/>
</group>
<separator string="Summary"/>

View File

@@ -49,7 +49,7 @@
</div>
<div class="fl-deadline-date text-muted" style="font-size:0.85rem;">
Filed: <t t-esc="case.filing_date or 'Pending'"/>
&nbsp;|&nbsp; Case No.: <t t-esc="case.court_case_number or 'Pending'"/>
&#160;|&#160; Case No.: <t t-esc="case.court_case_number or 'Pending'"/>
</div>
</div>
<div class="col-md-3">
@@ -134,9 +134,9 @@
<div class="fl-case-meta">
<t t-esc="dict([('dissolution','Dissolution of Marriage'),('paternity','Paternity'),('child_support','Child Support'),('modification','Modification'),('injunction','Injunction / DV')]).get(case.case_type, case.case_type)"/>
<t t-if="case.court_case_number">
&nbsp;| Case No. <t t-esc="case.court_case_number"/>
&#160;| Case No. <t t-esc="case.court_case_number"/>
</t>
&nbsp;| Filed <t t-esc="case.filing_date or 'Pending'"/>
&#160;| Filed <t t-esc="case.filing_date or 'Pending'"/>
</div>
</div>
<div>
@@ -148,7 +148,7 @@
<!-- Stats row -->
<div class="row g-3 mb-4">
<div class="col-6 col-md-3">
<div class="fl-stat-card <t t-if='case.overdue_deadline_count'>danger</t>">
<div t-attf-class="fl-stat-card #{'danger' if case.overdue_deadline_count else ''}">
<div class="fl-stat-number"><t t-esc="case.overdue_deadline_count or 0"/></div>
<div class="fl-stat-label">Overdue</div>
</div>
@@ -166,7 +166,7 @@
</div>
</div>
<div class="col-6 col-md-3">
<div class="fl-stat-card <t t-if='case.threshold_met'>success</t>">
<div t-attf-class="fl-stat-card #{'success' if case.threshold_met else ''}">
<div class="fl-stat-number" style="font-size:1.2rem;">
<t t-if="case.threshold_met">✓ Met</t>
<t t-else=""></t>
@@ -277,7 +277,7 @@
<t t-esc="doc.document_type or 'Document'"/>
</div>
</div>
<span class="fl-doc-badge <t t-if='doc.state == \"filed\"'>filed</t><t t-elif='doc.state == \"draft\"'>draft</t>">
<span t-attf-class="fl-doc-badge #{'filed' if doc.state == 'filed' else 'draft' if doc.state == 'draft' else ''}">
<t t-esc="(doc.state or 'draft').title()"/>
</span>
</a>
@@ -294,7 +294,7 @@
<strong><t t-esc="case.next_hearing.name"/></strong><br/>
<t t-esc="case.next_hearing.hearing_date"/>
<t t-if="case.next_hearing.location">
&nbsp;| <t t-esc="case.next_hearing.location"/>
&#160;| <t t-esc="case.next_hearing.location"/>
</t>
<div class="mt-2" style="font-size:0.85rem;">
<t t-if="case.next_hearing.parenting_class_warning">

View File

@@ -33,7 +33,7 @@
<!-- Hero -->
<div class="text-center mb-5">
<h1 style="color:#003366;" data-lang="en">Florida Family Law — Self-Help Portal</h1>
<h1 style="color:#003366;" data-lang="es" style="display:none;">Portal de Autoayuda — Derecho de Familia de Florida</h1>
<h1 style="color:#003366;display:none;" data-lang="es">Portal de Autoayuda — Derecho de Familia de Florida</h1>
<p class="lead text-muted" data-lang="en">
Free tools for pro se litigants in Miami-Dade County (11th Circuit).<br/>
Child support modification, paternity, dissolution, and more.
@@ -151,7 +151,7 @@
<!-- Header -->
<h2 style="color:#003366;" class="mb-1" data-lang="en">Start Your Case</h2>
<h2 style="color:#003366;" class="mb-1" data-lang="es" style="display:none;">Iniciar Su Caso</h2>
<h2 style="color:#003366;display:none;" class="mb-1" data-lang="es">Iniciar Su Caso</h2>
<p class="text-muted mb-4" data-lang="en">Fill in the information below. We'll help you generate the right court forms and track your deadlines.</p>
<p class="text-muted mb-4" data-lang="es" style="display:none;">Complete la información a continuación. Le ayudaremos a generar los formularios judiciales correctos y rastrear sus fechas límite.</p>
@@ -328,7 +328,7 @@
<div class="alert alert-info" style="font-size:0.85rem;" data-lang="en">
Use <strong>monthly net income</strong> (after taxes, FICA, and required deductions per FL 61.30(3)).
</div>
<div class="alert alert-info" style="font-size:0.85rem;" data-lang="es" style="display:none;">
<div class="alert alert-info" style="font-size:0.85rem;display:none;" data-lang="es">
Use el <strong>ingreso neto mensual</strong> (después de impuestos, FICA y deducciones requeridas por FL 61.30(3)).
</div>
@@ -461,7 +461,7 @@
<div class="container mt-5 mb-5 text-center">
<div style="font-size:3rem;"></div>
<h2 style="color:#003366;" data-lang="en">Your Case Has Been Created!</h2>
<h2 style="color:#003366;" data-lang="es" style="display:none;">¡Su Caso Ha Sido Creado!</h2>
<h2 style="color:#003366;display:none;" data-lang="es">¡Su Caso Ha Sido Creado!</h2>
<p class="lead" data-lang="en">
Case <strong><t t-esc="case_name"/></strong> is now open.
An email confirmation has been sent to <strong><t t-esc="petitioner_email"/></strong>.