Phase 6: portal, website intake, calculator, and case law library
- controllers/portal.py: FamilyLawPortal with 8 routes (cases list, case detail, calculator pre-fill, caselaw library, deadline complete AJAX, public intake landing/form/submit) - views/portal_case_templates.xml: portal home card, case list, full case detail with timeline widget, AI summary, DV safety banner - views/portal_calculator_templates.xml: FL 61.30 interactive calculator - views/portal_caselaw_templates.xml: searchable case law library (EN/ES) - views/website_intake_templates.xml: public 4-step intake form with DV quick-exit, fee waiver, and intake confirmation page - static/src/css/familylaw_portal.css: full portal/website CSS (EN/ES lang toggle, deadline card color coding, timeline, AI summary box) - static/src/js/fl_calculator.js: FL 61.30 schedule lookup, above- schedule formula, FL 61.30(11)(b) substantial timesharing calculation - static/src/js/fl_timeline.js: deadline timeline widget with filter buttons and mark-complete AJAX - __init__.py: import controllers package - __manifest__.py: add Phase 6 portal view files Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
211
activeblue_familylaw/views/portal_calculator_templates.xml
Normal file
211
activeblue_familylaw/views/portal_calculator_templates.xml
Normal file
@@ -0,0 +1,211 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Portal FL 61.30 Interactive Child Support Calculator
|
||||
URL: /my/cases/calculator
|
||||
Uses fl_calculator.js for live FL 61.30 calculation.
|
||||
-->
|
||||
<odoo>
|
||||
<data>
|
||||
|
||||
<template id="portal_calculator" name="FL 61.30 Child Support Calculator — Portal">
|
||||
<t t-call="portal.portal_layout">
|
||||
<div class="container fl-portal mt-4">
|
||||
|
||||
<!-- Breadcrumb -->
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb">
|
||||
<li class="breadcrumb-item"><a href="/my/home">Home</a></li>
|
||||
<li class="breadcrumb-item"><a href="/my/cases">My Cases</a></li>
|
||||
<li class="breadcrumb-item active">Support Calculator</li>
|
||||
</ol>
|
||||
</nav>
|
||||
|
||||
<!-- Language toggle -->
|
||||
<div class="fl-lang-toggle">
|
||||
<button class="btn btn-outline-secondary btn-sm fl-lang-btn btn-primary" data-lang="en">EN</button>
|
||||
<button class="btn btn-outline-secondary btn-sm fl-lang-btn" data-lang="es">ES</button>
|
||||
</div>
|
||||
|
||||
<!-- Header -->
|
||||
<div class="fl-case-header mb-4">
|
||||
<h2>
|
||||
<span data-lang="en">FL 61.30 Child Support Calculator</span>
|
||||
<span data-lang="es" style="display:none;">Calculadora de Pensión Alimenticia FL 61.30</span>
|
||||
</h2>
|
||||
<div class="fl-case-meta">
|
||||
<span data-lang="en">Florida Child Support Guidelines — Section 61.30, Florida Statutes</span>
|
||||
<span data-lang="es" style="display:none;">Pautas de Manutención Infantil de Florida — Sección 61.30, Estatutos de Florida</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Disclaimer -->
|
||||
<div class="alert alert-warning">
|
||||
<strong data-lang="en">⚠ Estimate Only — Not Legal Advice</strong>
|
||||
<strong data-lang="es" style="display:none;">⚠ Solo Estimación — No es Asesoramiento Legal</strong>
|
||||
<span data-lang="en"> This calculator provides an estimate based on the FL 61.30 schedule.
|
||||
The official court calculation may differ. Always verify with the court.</span>
|
||||
<span data-lang="es" style="display:none;"> Esta calculadora proporciona una estimación basada en el horario FL 61.30.
|
||||
El cálculo oficial del tribunal puede diferir. Siempre verifique con el tribunal.</span>
|
||||
</div>
|
||||
|
||||
<!-- Calculator form -->
|
||||
<div class="fl-calculator-section fl-calculator-widget">
|
||||
<div class="row">
|
||||
<!-- Column 1: Income -->
|
||||
<div class="col-md-6">
|
||||
<h5 class="text-primary mb-3" data-lang="en">Income Information</h5>
|
||||
<h5 class="text-primary mb-3" data-lang="es" style="display:none;">Información de Ingresos</h5>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label fw-semibold">
|
||||
<span data-lang="en">Petitioner Monthly Net Income</span>
|
||||
<span data-lang="es" style="display:none;">Ingreso Neto Mensual del Peticionario</span>
|
||||
</label>
|
||||
<div class="input-group">
|
||||
<span class="input-group-text">$</span>
|
||||
<input type="number" id="petitionerNetIncome" class="form-control"
|
||||
placeholder="0.00" min="0" step="1"
|
||||
value="" t-if="prefill_petitioner"
|
||||
t-att-value="prefill_petitioner"/>
|
||||
<input type="number" id="petitionerNetIncome" class="form-control"
|
||||
placeholder="0.00" min="0" step="1"
|
||||
t-if="not prefill_petitioner"/>
|
||||
</div>
|
||||
<div class="form-text" data-lang="en">After taxes, FICA, and allowable deductions (FL 61.30(3))</div>
|
||||
<div class="form-text" data-lang="es" style="display:none;">Después de impuestos, FICA y deducciones permitidas (FL 61.30(3))</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label fw-semibold">
|
||||
<span data-lang="en">Respondent Monthly Net Income</span>
|
||||
<span data-lang="es" style="display:none;">Ingreso Neto Mensual del Respondente</span>
|
||||
</label>
|
||||
<div class="input-group">
|
||||
<span class="input-group-text">$</span>
|
||||
<input type="number" id="respondentNetIncome" class="form-control"
|
||||
placeholder="0.00" min="0" step="1"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label fw-semibold">
|
||||
<span data-lang="en">Number of Children</span>
|
||||
<span data-lang="es" style="display:none;">Número de Hijos</span>
|
||||
</label>
|
||||
<select id="numChildren" class="form-select">
|
||||
<option value="1">1</option>
|
||||
<option value="2">2</option>
|
||||
<option value="3">3</option>
|
||||
<option value="4">4</option>
|
||||
<option value="5">5</option>
|
||||
<option value="6">6</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Column 2: Adjustments -->
|
||||
<div class="col-md-6">
|
||||
<h5 class="text-primary mb-3" data-lang="en">Adjustments & Timesharing</h5>
|
||||
<h5 class="text-primary mb-3" data-lang="es" style="display:none;">Ajustes y Tiempo Compartido</h5>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label fw-semibold">
|
||||
<span data-lang="en">Petitioner Health Insurance (child's share)</span>
|
||||
<span data-lang="es" style="display:none;">Seguro Médico del Peticionario (parte del hijo)</span>
|
||||
</label>
|
||||
<div class="input-group">
|
||||
<span class="input-group-text">$</span>
|
||||
<input type="number" id="petitionerHealthInsurance" class="form-control" placeholder="0.00" min="0" step="1"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label fw-semibold">
|
||||
<span data-lang="en">Respondent Health Insurance (child's share)</span>
|
||||
<span data-lang="es" style="display:none;">Seguro Médico del Respondente (parte del hijo)</span>
|
||||
</label>
|
||||
<div class="input-group">
|
||||
<span class="input-group-text">$</span>
|
||||
<input type="number" id="respondentHealthInsurance" class="form-control" placeholder="0.00" min="0" step="1"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label fw-semibold">
|
||||
<span data-lang="en">Petitioner Childcare (work-related)</span>
|
||||
<span data-lang="es" style="display:none;">Cuidado Infantil del Peticionario</span>
|
||||
</label>
|
||||
<div class="input-group">
|
||||
<span class="input-group-text">$</span>
|
||||
<input type="number" id="petitionerChildcare" class="form-control" placeholder="0.00" min="0" step="1"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label fw-semibold">
|
||||
<span data-lang="en">Respondent Childcare (work-related)</span>
|
||||
<span data-lang="es" style="display:none;">Cuidado Infantil del Respondente</span>
|
||||
</label>
|
||||
<div class="input-group">
|
||||
<span class="input-group-text">$</span>
|
||||
<input type="number" id="respondentChildcare" class="form-control" placeholder="0.00" min="0" step="1"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label fw-semibold">
|
||||
<span data-lang="en">Petitioner Overnights / Year</span>
|
||||
<span data-lang="es" style="display:none;">Noches del Peticionario / Año</span>
|
||||
</label>
|
||||
<input type="number" id="petitionerOvernights" class="form-control"
|
||||
placeholder="182" min="0" max="365" step="1" value="182"/>
|
||||
<div class="form-text" data-lang="en">Substantial timesharing (FL 61.30(11)(b)) applies when either parent >73 nights/year</div>
|
||||
<div class="form-text" data-lang="es" style="display:none;">El tiempo compartido sustancial aplica cuando cualquier padre tiene >73 noches/año</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label fw-semibold">
|
||||
<span data-lang="en">Respondent Overnights / Year</span>
|
||||
<span data-lang="es" style="display:none;">Noches del Respondente / Año</span>
|
||||
</label>
|
||||
<input type="number" id="respondentOvernights" class="form-control"
|
||||
placeholder="183" min="0" max="365" step="1" value="183"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Result area (rendered by fl_calculator.js) -->
|
||||
<div class="fl-calculator-result-area mt-2"></div>
|
||||
<div class="fl-calculator-breakdown mt-3"></div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- How it works -->
|
||||
<div class="fl-section-card mt-4">
|
||||
<div class="fl-section-header" data-lang="en">How FL 61.30 Works</div>
|
||||
<div class="fl-section-header" data-lang="es" style="display:none;">Cómo Funciona FL 61.30</div>
|
||||
<div class="fl-section-body" style="font-size:0.9rem;">
|
||||
<div data-lang="en">
|
||||
<p><strong>Step 1:</strong> Add both parents' monthly net income (after taxes and allowable deductions).</p>
|
||||
<p><strong>Step 2:</strong> Look up the basic obligation from the FL 61.30 schedule based on combined income and number of children.</p>
|
||||
<p><strong>Step 3:</strong> Add health insurance and childcare costs to get the adjusted obligation.</p>
|
||||
<p><strong>Step 4:</strong> Each parent pays their proportional share (based on income %).</p>
|
||||
<p><strong>Step 5:</strong> If either parent has the children overnight more than 73 times per year, the substantial timesharing formula (FL 61.30(11)(b)) applies, which can significantly reduce the paying parent's obligation.</p>
|
||||
<p><strong>Modification:</strong> A modification is allowed when the new guideline amount differs by <strong>15% AND $50</strong> from the current order (FL 61.30(1)(b)).</p>
|
||||
</div>
|
||||
<div data-lang="es" style="display:none;">
|
||||
<p><strong>Paso 1:</strong> Sume los ingresos netos mensuales de ambos padres (después de impuestos y deducciones permitidas).</p>
|
||||
<p><strong>Paso 2:</strong> Busque la obligación básica en el horario FL 61.30 según los ingresos combinados y el número de hijos.</p>
|
||||
<p><strong>Paso 3:</strong> Agregue los costos de seguro médico y cuidado infantil para obtener la obligación ajustada.</p>
|
||||
<p><strong>Paso 4:</strong> Cada padre paga su parte proporcional (según % de ingresos).</p>
|
||||
<p><strong>Paso 5:</strong> Si cualquier padre tiene a los hijos de noche más de 73 veces al año, se aplica la fórmula de tiempo compartido sustancial (FL 61.30(11)(b)).</p>
|
||||
<p><strong>Modificación:</strong> Se permite una modificación cuando el nuevo monto de las pautas difiere en <strong>15% Y $50</strong> de la orden actual (FL 61.30(1)(b)).</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
316
activeblue_familylaw/views/portal_case_templates.xml
Normal file
316
activeblue_familylaw/views/portal_case_templates.xml
Normal file
@@ -0,0 +1,316 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Portal templates for fl.case — My Case page (authenticated litigant view)
|
||||
URL: /my/cases and /my/cases/<case_id>
|
||||
Inherits portal.portal_my_home and portal.portal_layout.
|
||||
-->
|
||||
<odoo>
|
||||
<data>
|
||||
|
||||
<!-- ══ Portal Home: add "My Cases" card ══════════════════════════════ -->
|
||||
<template id="portal_my_home_cases" name="FL Cases — Portal Home Entry"
|
||||
inherit_id="portal.portal_my_home" priority="30">
|
||||
<xpath expr="//div[hasclass('o_portal_docs')]" position="inside">
|
||||
<t t-if="case_count">
|
||||
<div class="o_portal_doc_category">
|
||||
<t t-call="portal.portal_docs_entry">
|
||||
<t t-set="icon">/activeblue_familylaw/static/src/img/fl_icon.png</t>
|
||||
<t t-set="text">My Family Law Cases</t>
|
||||
<t t-set="url">/my/cases</t>
|
||||
<t t-set="count" t-value="case_count"/>
|
||||
</t>
|
||||
</div>
|
||||
</t>
|
||||
</xpath>
|
||||
</template>
|
||||
|
||||
<!-- ══ Case list page ════════════════════════════════════════════════ -->
|
||||
<template id="portal_my_cases" name="My Family Law Cases">
|
||||
<t t-call="portal.portal_layout">
|
||||
<t t-set="breadcrumbs_searchbar" t-value="True"/>
|
||||
<t t-call="portal.portal_searchbar">
|
||||
<t t-set="title">My Cases</t>
|
||||
</t>
|
||||
<div class="container fl-portal mt-4">
|
||||
<t t-if="not cases">
|
||||
<div class="alert alert-info">
|
||||
You have no family law cases on file. Contact ActiveBlue to open a new case.
|
||||
</div>
|
||||
</t>
|
||||
<t t-foreach="cases" t-as="case">
|
||||
<a t-attf-href="/my/cases/#{case.id}" class="text-decoration-none">
|
||||
<div class="fl-deadline-card mb-3">
|
||||
<div class="row align-items-center">
|
||||
<div class="col-md-7">
|
||||
<div class="fl-deadline-type">
|
||||
<t t-esc="dict([('dissolution','Dissolution of Marriage'),('paternity','Paternity'),('child_support','Child Support'),('modification','Modification'),('injunction','Injunction')]).get(case.case_type, case.case_type)"/>
|
||||
</div>
|
||||
<div class="fl-deadline-name">
|
||||
<t t-esc="case.name"/>
|
||||
</div>
|
||||
<div class="fl-deadline-date text-muted" style="font-size:0.85rem;">
|
||||
Filed: <t t-esc="case.filing_date or 'Pending'"/>
|
||||
| Case No.: <t t-esc="case.court_case_number or 'Pending'"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<t t-if="case.overdue_deadline_count">
|
||||
<span class="fl-deadline-overdue">
|
||||
⚠ <t t-esc="case.overdue_deadline_count"/> overdue deadline(s)
|
||||
</span>
|
||||
</t>
|
||||
</div>
|
||||
<div class="col-md-2 text-end">
|
||||
<span class="badge bg-secondary">
|
||||
<t t-esc="case.stage_id.name if case.stage_id else 'Active'"/>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</t>
|
||||
</div>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
<!-- ══ Case detail page ══════════════════════════════════════════════ -->
|
||||
<template id="portal_case_detail" name="Case Detail — Portal">
|
||||
<t t-call="portal.portal_layout">
|
||||
<div class="container fl-portal mt-4">
|
||||
|
||||
<!-- Breadcrumb -->
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb">
|
||||
<li class="breadcrumb-item"><a href="/my/home">Home</a></li>
|
||||
<li class="breadcrumb-item"><a href="/my/cases">My Cases</a></li>
|
||||
<li class="breadcrumb-item active"><t t-esc="case.name"/></li>
|
||||
</ol>
|
||||
</nav>
|
||||
|
||||
<!-- Language toggle -->
|
||||
<div class="fl-lang-toggle">
|
||||
<button class="btn btn-outline-secondary btn-sm fl-lang-btn" data-lang="en">EN</button>
|
||||
<button class="btn btn-outline-secondary btn-sm fl-lang-btn" data-lang="es">ES</button>
|
||||
</div>
|
||||
|
||||
<!-- Attorney referral banner (if AI flagged it) -->
|
||||
<t t-if="latest_analysis and latest_analysis.attorney_referral_flag">
|
||||
<div class="fl-attorney-referral-banner">
|
||||
<h5>⚠ Attorney Consultation Recommended</h5>
|
||||
<p><t t-esc="latest_analysis.attorney_referral_reason or 'Based on your case details, consulting with an attorney is strongly recommended.'"/></p>
|
||||
<p>
|
||||
<strong>Free Legal Resources:</strong>
|
||||
<a href="https://www.flvlp.org" target="_blank">FL Volunteer Lawyers Project</a> |
|
||||
<a href="https://www.fllsc.org" target="_blank">Legal Services of Greater Miami</a> |
|
||||
<a href="https://www.flcourts.gov/Resources-Services/Family-Courts" target="_blank">FL Courts Self-Help</a>
|
||||
</p>
|
||||
</div>
|
||||
</t>
|
||||
|
||||
<!-- DV safety banner -->
|
||||
<t t-if="case.domestic_violence_flag">
|
||||
<div class="fl-dv-safety-banner">
|
||||
<div data-lang="en">
|
||||
<h5>🔴 Safety Resources</h5>
|
||||
<p>If you are in immediate danger, call <strong>911</strong>.<br/>
|
||||
National DV Hotline: <strong>1-800-799-7233</strong> (TTY: 1-800-787-3224)<br/>
|
||||
Miami-Dade Safe Space: <strong>(305) 758-2546</strong></p>
|
||||
<a href="https://www.google.com" class="fl-dv-safety-escape-link" target="_blank">Quick Exit (Google)</a>
|
||||
</div>
|
||||
<div data-lang="es" style="display:none;">
|
||||
<h5>🔴 Recursos de Seguridad</h5>
|
||||
<p>Si está en peligro inmediato, llame al <strong>911</strong>.<br/>
|
||||
Línea Nacional de Violencia Doméstica: <strong>1-800-799-7233</strong><br/>
|
||||
Miami-Dade Safe Space: <strong>(305) 758-2546</strong></p>
|
||||
<a href="https://www.google.com" class="fl-dv-safety-escape-link" target="_blank">Salida Rápida (Google)</a>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
|
||||
<!-- Case header -->
|
||||
<div class="fl-case-header">
|
||||
<div class="d-flex justify-content-between align-items-start">
|
||||
<div>
|
||||
<h2><t t-esc="case.name"/></h2>
|
||||
<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">
|
||||
| Case No. <t t-esc="case.court_case_number"/>
|
||||
</t>
|
||||
| Filed <t t-esc="case.filing_date or 'Pending'"/>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<span class="badge"><t t-esc="case.stage_id.name if case.stage_id else 'Active'"/></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 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 class="fl-stat-number"><t t-esc="case.overdue_deadline_count or 0"/></div>
|
||||
<div class="fl-stat-label">Overdue</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6 col-md-3">
|
||||
<div class="fl-stat-card">
|
||||
<div class="fl-stat-number"><t t-esc="len(case.deadline_ids.filtered(lambda d: not d.completed))"/></div>
|
||||
<div class="fl-stat-label">Open Deadlines</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6 col-md-3">
|
||||
<div class="fl-stat-card">
|
||||
<div class="fl-stat-number"><t t-esc="len(case.child_ids.filtered(lambda c: not c.emancipated))"/></div>
|
||||
<div class="fl-stat-label">Minor Children</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6 col-md-3">
|
||||
<div class="fl-stat-card <t t-if='case.threshold_met'>success</t>">
|
||||
<div class="fl-stat-number" style="font-size:1.2rem;">
|
||||
<t t-if="case.threshold_met">✓ Met</t>
|
||||
<t t-else="">—</t>
|
||||
</div>
|
||||
<div class="fl-stat-label">Mod. Threshold</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- AI Summary -->
|
||||
<t t-if="latest_analysis and latest_analysis.plain_english_summary">
|
||||
<div class="fl-ai-summary">
|
||||
<div class="fl-ai-header">🤖 AI Case Summary</div>
|
||||
<div class="fl-ai-text" data-lang="en">
|
||||
<t t-esc="latest_analysis.plain_english_summary"/>
|
||||
</div>
|
||||
<div class="fl-ai-text" data-lang="es" style="display:none;">
|
||||
<t t-esc="latest_analysis.plain_english_summary_es or latest_analysis.plain_english_summary"/>
|
||||
</div>
|
||||
<div class="fl-ai-disclaimer">
|
||||
This is an AI-generated summary for informational purposes only. It is NOT legal advice.
|
||||
Always verify with a licensed Florida attorney.
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
|
||||
<!-- Deadlines / Timeline -->
|
||||
<div class="fl-section-card mb-4">
|
||||
<div class="fl-section-header">📅 Deadlines & Timeline</div>
|
||||
<div class="fl-section-body">
|
||||
<div class="fl-timeline-widget">
|
||||
<!-- Filter buttons -->
|
||||
<div class="btn-group btn-group-sm mb-3" role="group">
|
||||
<button type="button" class="btn btn-primary fl-timeline-filter active" data-filter="pending">Pending</button>
|
||||
<button type="button" class="btn btn-outline-secondary fl-timeline-filter" data-filter="overdue">Overdue</button>
|
||||
<button type="button" class="btn btn-outline-secondary fl-timeline-filter" data-filter="completed">Completed</button>
|
||||
<button type="button" class="btn btn-outline-secondary fl-timeline-filter" data-filter="all">All</button>
|
||||
</div>
|
||||
<!-- Deadline data for JS -->
|
||||
<script type="application/json" id="fl-timeline-data">
|
||||
[<t t-foreach="case.deadline_ids" t-as="dl">
|
||||
<t t-if="not dl_last">,</t>
|
||||
{"id": <t t-esc="dl.id"/>, "name": "<t t-esc="dl.name.replace('"', '').replace('\\', '')"/>", "dueDate": "<t t-esc="dl.due_date"/>", "completed": <t t-if="dl.completed">true</t><t t-else="">false</t>, "statRef": "<t t-esc="dl.statute_reference or ''"/>"}
|
||||
</t>]
|
||||
</script>
|
||||
<div class="fl-timeline">
|
||||
<div class="fl-timeline-list">
|
||||
<!-- Rendered by fl_timeline.js -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Support Info (if applicable) -->
|
||||
<t t-if="case.calculated_support or case.current_order_amount">
|
||||
<div class="fl-section-card mb-4">
|
||||
<div class="fl-section-header">💰 Child Support</div>
|
||||
<div class="fl-section-body">
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<div class="text-muted" style="font-size:0.82rem;">CURRENT ORDER</div>
|
||||
<div style="font-size:1.3rem;font-weight:700;color:#003366;">
|
||||
$<t t-esc="'%,.2f' % case.current_order_amount"/> / mo
|
||||
</div>
|
||||
</div>
|
||||
<t t-if="case.calculated_support">
|
||||
<div class="col-md-4">
|
||||
<div class="text-muted" style="font-size:0.82rem;">GUIDELINE AMOUNT</div>
|
||||
<div style="font-size:1.3rem;font-weight:700;color:#003366;">
|
||||
$<t t-esc="'%,.2f' % case.calculated_support"/> / mo
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="text-muted" style="font-size:0.82rem;">THRESHOLD STATUS</div>
|
||||
<div style="font-size:1.1rem;font-weight:600;">
|
||||
<t t-if="case.threshold_met">
|
||||
<span class="text-success">✓ Modification threshold met</span>
|
||||
</t>
|
||||
<t t-else="">
|
||||
<span class="text-muted">Not met yet</span>
|
||||
</t>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</div>
|
||||
<div class="mt-3">
|
||||
<a href="/my/cases/calculator" class="btn btn-sm btn-outline-primary">
|
||||
Open Support Calculator →
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
|
||||
<!-- Documents -->
|
||||
<t t-if="case.document_ids">
|
||||
<div class="fl-section-card mb-4">
|
||||
<div class="fl-section-header">📄 Documents</div>
|
||||
<div class="fl-section-body p-0">
|
||||
<t t-foreach="case.document_ids" t-as="doc">
|
||||
<a t-attf-href="/my/cases/#{case.id}/documents/#{doc.id}"
|
||||
class="fl-document-item">
|
||||
<div class="fl-doc-icon">📄</div>
|
||||
<div>
|
||||
<div class="fl-doc-name"><t t-esc="doc.name"/></div>
|
||||
<div class="fl-doc-type">
|
||||
<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>">
|
||||
<t t-esc="(doc.state or 'draft').title()"/>
|
||||
</span>
|
||||
</a>
|
||||
</t>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
|
||||
<!-- Next Hearing -->
|
||||
<t t-if="case.next_hearing">
|
||||
<div class="fl-section-card mb-4">
|
||||
<div class="fl-section-header">🏛 Upcoming Hearing</div>
|
||||
<div class="fl-section-body">
|
||||
<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">
|
||||
| <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">
|
||||
<div class="text-warning">⚠ <t t-esc="case.next_hearing.parenting_class_warning"/></div>
|
||||
</t>
|
||||
<t t-if="case.next_hearing.discovery_cutoff_warning">
|
||||
<div class="text-warning">⚠ <t t-esc="case.next_hearing.discovery_cutoff_warning"/></div>
|
||||
</t>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
|
||||
</div>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
201
activeblue_familylaw/views/portal_caselaw_templates.xml
Normal file
201
activeblue_familylaw/views/portal_caselaw_templates.xml
Normal file
@@ -0,0 +1,201 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Portal Case Law Library — /my/cases/caselaw
|
||||
Searchable FL case law browser for pro se litigants.
|
||||
Bilingual EN/ES. Filterable by issue tag.
|
||||
-->
|
||||
<odoo>
|
||||
<data>
|
||||
|
||||
<template id="portal_caselaw" name="FL Case Law Library — Portal">
|
||||
<t t-call="portal.portal_layout">
|
||||
<div class="container fl-portal mt-4">
|
||||
|
||||
<!-- Breadcrumb -->
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb">
|
||||
<li class="breadcrumb-item"><a href="/my/home">Home</a></li>
|
||||
<li class="breadcrumb-item active">Case Law Library</li>
|
||||
</ol>
|
||||
</nav>
|
||||
|
||||
<!-- Language toggle -->
|
||||
<div class="fl-lang-toggle">
|
||||
<button class="btn btn-outline-secondary btn-sm fl-lang-btn btn-primary" data-lang="en">EN</button>
|
||||
<button class="btn btn-outline-secondary btn-sm fl-lang-btn" data-lang="es">ES</button>
|
||||
</div>
|
||||
|
||||
<!-- Header -->
|
||||
<div class="fl-case-header mb-4">
|
||||
<h2>
|
||||
<span data-lang="en">Florida Family Law — Case Law Library</span>
|
||||
<span data-lang="es" style="display:none;">Derecho de Familia de Florida — Biblioteca de Jurisprudencia</span>
|
||||
</h2>
|
||||
<div class="fl-case-meta">
|
||||
<span data-lang="en">Key cases for child support modification, income imputation, timesharing, and more</span>
|
||||
<span data-lang="es" style="display:none;">Casos clave para modificación de manutención, imputación de ingresos, tiempo compartido y más</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Disclaimer -->
|
||||
<div class="alert alert-info mb-4" style="font-size:0.88rem;">
|
||||
<span data-lang="en">
|
||||
<strong>Note:</strong> These case summaries are for educational purposes only.
|
||||
Always verify citations with the official Florida Reporter before citing in court.
|
||||
Holdings are summaries — read the full opinion for complete analysis.
|
||||
</span>
|
||||
<span data-lang="es" style="display:none;">
|
||||
<strong>Nota:</strong> Estos resúmenes de casos son solo para fines educativos.
|
||||
Siempre verifique las citas con el Florida Reporter oficial antes de citar en el tribunal.
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- Filter bar -->
|
||||
<div class="mb-4">
|
||||
<div class="row g-2 align-items-center">
|
||||
<div class="col-md-5">
|
||||
<input type="text" id="caselaw-search" class="form-control form-control-sm"
|
||||
placeholder="Search cases, citations, holdings..."/>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<select id="caselaw-tag-filter" class="form-select form-select-sm">
|
||||
<option value="">All Issues</option>
|
||||
<option value="modification_threshold">Modification Threshold (FL 61.30(1)(b))</option>
|
||||
<option value="income_imputation">Income Imputation</option>
|
||||
<option value="self_employment_income">Self-Employment Income</option>
|
||||
<option value="timesharing_deviation">Timesharing / FL 61.30(11)(b)</option>
|
||||
<option value="domestic_violence">Domestic Violence</option>
|
||||
<option value="default_judgment">Default Judgment</option>
|
||||
<option value="residency">Residency Requirement</option>
|
||||
<option value="parenting_class">Parenting Class</option>
|
||||
<option value="fee_waiver">Fee Waiver</option>
|
||||
<option value="post_order">Post-Order / Modification</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<select id="caselaw-court-filter" class="form-select form-select-sm">
|
||||
<option value="">All Courts</option>
|
||||
<option value="fl_supreme">FL Supreme Court</option>
|
||||
<option value="3rd_dca">3rd DCA (Miami-Dade)</option>
|
||||
<option value="4th_dca">4th DCA</option>
|
||||
<option value="2nd_dca">2nd DCA</option>
|
||||
<option value="1st_dca">1st DCA</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Case list -->
|
||||
<div id="caselaw-list">
|
||||
<t t-foreach="cases" t-as="cl">
|
||||
<div class="fl-section-card mb-3 caselaw-item"
|
||||
t-att-data-tags="','.join(cl.issue_tag_ids.mapped('name'))"
|
||||
t-att-data-court="cl.court"
|
||||
t-att-data-text="(cl.citation + ' ' + cl.holding).lower()">
|
||||
<div class="fl-section-header d-flex justify-content-between align-items-center">
|
||||
<span>
|
||||
<em><t t-esc="cl.citation"/></em>
|
||||
</span>
|
||||
<span>
|
||||
<t t-foreach="cl.issue_tag_ids" t-as="tag">
|
||||
<span class="badge bg-secondary ms-1" style="font-size:0.72rem;">
|
||||
<t t-esc="tag.name"/>
|
||||
</span>
|
||||
</t>
|
||||
</span>
|
||||
</div>
|
||||
<div class="fl-section-body">
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
<div class="mb-2">
|
||||
<strong data-lang="en">Holding:</strong>
|
||||
<strong data-lang="es" style="display:none;">Decisión:</strong>
|
||||
<span style="font-size:0.9rem;"> <t t-esc="cl.holding"/></span>
|
||||
</div>
|
||||
<t t-if="cl.plain_english">
|
||||
<div class="fl-ai-summary" style="padding:10px;">
|
||||
<div class="fl-ai-header" data-lang="en">Plain English</div>
|
||||
<div class="fl-ai-header" data-lang="es" style="display:none;">En Español Simple</div>
|
||||
<div class="fl-ai-text" data-lang="en" style="font-size:0.88rem;">
|
||||
<t t-esc="cl.plain_english"/>
|
||||
</div>
|
||||
<div class="fl-ai-text" data-lang="es" style="display:none;font-size:0.88rem;">
|
||||
<t t-esc="cl.plain_english_es or cl.plain_english"/>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<table class="table table-sm" style="font-size:0.82rem;">
|
||||
<tr>
|
||||
<td class="text-muted">Court:</td>
|
||||
<td>
|
||||
<t t-esc="dict([('fl_supreme','FL Supreme Court'),('3rd_dca','3rd DCA'),('4th_dca','4th DCA'),('2nd_dca','2nd DCA'),('1st_dca','1st DCA'),('5th_dca','5th DCA')]).get(cl.court, cl.court)"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="text-muted">Year:</td>
|
||||
<td><t t-esc="cl.year"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="text-muted">Favorable to:</td>
|
||||
<td>
|
||||
<t t-esc="dict([('petitioner','Petitioner'),('respondent','Respondent'),('neutral','Neutral'),('depends','Depends')]).get(cl.favorable_to, cl.favorable_to)"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<t t-if="cl.google_scholar_url">
|
||||
<a t-att-href="cl.google_scholar_url" target="_blank"
|
||||
class="btn btn-sm btn-outline-secondary w-100"
|
||||
rel="noopener noreferrer">
|
||||
View on Google Scholar →
|
||||
</a>
|
||||
</t>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
|
||||
<t t-if="not cases">
|
||||
<div class="alert alert-info">No cases in the library yet.</div>
|
||||
</t>
|
||||
</div>
|
||||
|
||||
<!-- No results message (shown by JS) -->
|
||||
<div id="caselaw-no-results" class="alert alert-warning" style="display:none;">
|
||||
<span data-lang="en">No cases match your search. Try different keywords or clear the filter.</span>
|
||||
<span data-lang="es" style="display:none;">Ningún caso coincide con su búsqueda. Pruebe diferentes palabras clave o elimine el filtro.</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Inline filter/search JS -->
|
||||
<script type="text/javascript">
|
||||
(function() {
|
||||
function filterCases() {
|
||||
var search = document.getElementById('caselaw-search').value.toLowerCase();
|
||||
var tag = document.getElementById('caselaw-tag-filter').value;
|
||||
var court = document.getElementById('caselaw-court-filter').value;
|
||||
var items = document.querySelectorAll('.caselaw-item');
|
||||
var visible = 0;
|
||||
items.forEach(function(item) {
|
||||
var matchText = !search || (item.dataset.text || '').includes(search);
|
||||
var matchTag = !tag || (item.dataset.tags || '').split(',').includes(tag);
|
||||
var matchCourt = !court || item.dataset.court === court;
|
||||
var show = matchText && matchTag && matchCourt;
|
||||
item.style.display = show ? '' : 'none';
|
||||
if (show) visible++;
|
||||
});
|
||||
document.getElementById('caselaw-no-results').style.display = visible === 0 ? '' : 'none';
|
||||
}
|
||||
document.getElementById('caselaw-search').addEventListener('input', filterCases);
|
||||
document.getElementById('caselaw-tag-filter').addEventListener('change', filterCases);
|
||||
document.getElementById('caselaw-court-filter').addEventListener('change', filterCases);
|
||||
})();
|
||||
</script>
|
||||
|
||||
</t>
|
||||
</template>
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
502
activeblue_familylaw/views/website_intake_templates.xml
Normal file
502
activeblue_familylaw/views/website_intake_templates.xml
Normal file
@@ -0,0 +1,502 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Public Website Intake Form — /family-law/intake
|
||||
Anonymous/public form for prospective pro se litigants.
|
||||
Multi-step wizard. Bilingual EN/ES.
|
||||
On submit → creates fl.intake.wizard record → creates fl.case.
|
||||
-->
|
||||
<odoo>
|
||||
<data>
|
||||
|
||||
<!-- ══ Website navbar item ══════════════════════════════════════════ -->
|
||||
<template id="website_navbar_intake" inherit_id="website.layout" name="FL Intake Nav">
|
||||
<xpath expr="//ul[hasclass('navbar-nav')]" position="inside">
|
||||
<li class="nav-item">
|
||||
<a href="/family-law/intake" class="nav-link">
|
||||
<span data-lang="en">Start My Case</span>
|
||||
<span data-lang="es" style="display:none;">Iniciar Mi Caso</span>
|
||||
</a>
|
||||
</li>
|
||||
</xpath>
|
||||
</template>
|
||||
|
||||
<!-- ══ Public landing page ══════════════════════════════════════════ -->
|
||||
<template id="website_intake_landing" name="FL Intake — Landing">
|
||||
<t t-call="website.layout">
|
||||
<div class="container mt-5 mb-5">
|
||||
|
||||
<!-- Language toggle -->
|
||||
<div class="text-end mb-3">
|
||||
<button class="btn btn-outline-secondary btn-sm fl-lang-btn btn-primary" data-lang="en">EN</button>
|
||||
<button class="btn btn-outline-secondary btn-sm fl-lang-btn" data-lang="es">ES</button>
|
||||
</div>
|
||||
|
||||
<!-- 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>
|
||||
<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.
|
||||
</p>
|
||||
<p class="lead text-muted" data-lang="es" style="display:none;">
|
||||
Herramientas gratuitas para litigantes pro se en el Condado de Miami-Dade (Circuito 11).<br/>
|
||||
Modificación de manutención, paternidad, disolución y más.
|
||||
</p>
|
||||
<a href="/family-law/intake/start" class="btn btn-lg btn-primary mt-3 me-2"
|
||||
style="background:#003366;border-color:#003366;">
|
||||
<span data-lang="en">Start My Case →</span>
|
||||
<span data-lang="es" style="display:none;">Iniciar Mi Caso →</span>
|
||||
</a>
|
||||
<a href="/my/cases/calculator" class="btn btn-lg btn-outline-secondary mt-3">
|
||||
<span data-lang="en">Support Calculator</span>
|
||||
<span data-lang="es" style="display:none;">Calculadora de Pensión</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<!-- Service cards -->
|
||||
<div class="row g-4 mb-5">
|
||||
<div class="col-md-4">
|
||||
<div class="fl-section-card h-100">
|
||||
<div class="fl-section-header">Child Support Modification</div>
|
||||
<div class="fl-section-body">
|
||||
<p data-lang="en">Has your income or the other parent's income changed significantly?
|
||||
Florida allows modification when the new guideline amount differs by 15% AND $50 (FL 61.30(1)(b)).</p>
|
||||
<p data-lang="es" style="display:none;">¿Han cambiado significativamente sus ingresos o los del otro padre?
|
||||
Florida permite la modificación cuando el nuevo monto de las pautas difiere en un 15% Y $50.</p>
|
||||
<a href="/family-law/intake/start?case_type=modification" class="btn btn-sm btn-outline-primary">
|
||||
<span data-lang="en">Start Modification Case</span>
|
||||
<span data-lang="es" style="display:none;">Iniciar Caso de Modificación</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="fl-section-card h-100">
|
||||
<div class="fl-section-header">Paternity</div>
|
||||
<div class="fl-section-body">
|
||||
<p data-lang="en">Establish legal paternity, parenting rights, and child support for unmarried parents in Miami-Dade County.</p>
|
||||
<p data-lang="es" style="display:none;">Establecer paternidad legal, derechos de crianza y manutención infantil para padres no casados en el Condado de Miami-Dade.</p>
|
||||
<a href="/family-law/intake/start?case_type=paternity" class="btn btn-sm btn-outline-primary">
|
||||
<span data-lang="en">Start Paternity Case</span>
|
||||
<span data-lang="es" style="display:none;">Iniciar Caso de Paternidad</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="fl-section-card h-100">
|
||||
<div class="fl-section-header">Dissolution of Marriage</div>
|
||||
<div class="fl-section-body">
|
||||
<p data-lang="en">File for divorce in Florida. Residency requirement: 6 months in Florida before filing (FL 61.021).</p>
|
||||
<p data-lang="es" style="display:none;">Presentar una solicitud de divorcio en Florida. Requisito de residencia: 6 meses en Florida antes de presentar (FL 61.021).</p>
|
||||
<a href="/family-law/intake/start?case_type=dissolution" class="btn btn-sm btn-outline-primary">
|
||||
<span data-lang="en">Start Dissolution Case</span>
|
||||
<span data-lang="es" style="display:none;">Iniciar Caso de Disolución</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Resources -->
|
||||
<div class="fl-section-card mb-4">
|
||||
<div class="fl-section-header" data-lang="en">Free Legal Resources — Miami-Dade</div>
|
||||
<div class="fl-section-header" data-lang="es" style="display:none;">Recursos Legales Gratuitos — Miami-Dade</div>
|
||||
<div class="fl-section-body">
|
||||
<div class="row g-3" style="font-size:0.9rem;">
|
||||
<div class="col-md-6">
|
||||
<strong>FL Volunteer Lawyers Project:</strong>
|
||||
<a href="https://www.flvlp.org" target="_blank">flvlp.org</a><br/>
|
||||
<strong>Legal Services of Greater Miami:</strong>
|
||||
<a href="https://www.lsgmi.org" target="_blank">lsgmi.org</a><br/>
|
||||
<strong>Miami-Dade Clerk Self-Help Center:</strong>
|
||||
<a href="https://www.miamidadeclerk.gov/family" target="_blank">miamidadeclerk.gov</a>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<strong>FL Courts Self-Help:</strong>
|
||||
<a href="https://www.flcourts.gov/Resources-Services/Family-Courts" target="_blank">flcourts.gov</a><br/>
|
||||
<strong>FL DOR Child Support eServices:</strong>
|
||||
<a href="https://floridarevenue.com/childsupport" target="_blank">floridarevenue.com/childsupport</a><br/>
|
||||
<strong>DV Hotline (24/7):</strong> 1-800-799-7233
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Disclaimer -->
|
||||
<div class="text-center text-muted" style="font-size:0.8rem;">
|
||||
<span data-lang="en">ActiveBlue Family Law is a case management tool — NOT a law firm.
|
||||
Nothing on this website constitutes legal advice. Consult a licensed Florida attorney for legal guidance.</span>
|
||||
<span data-lang="es" style="display:none;">ActiveBlue Family Law es una herramienta de gestión de casos, NO una firma de abogados.
|
||||
Nada en este sitio web constituye asesoramiento legal. Consulte a un abogado con licencia de Florida.</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
<!-- ══ Multi-step intake form ═══════════════════════════════════════ -->
|
||||
<template id="website_intake_form" name="FL Intake — Case Setup Form">
|
||||
<t t-call="website.layout">
|
||||
<div class="container mt-4 mb-5">
|
||||
|
||||
<!-- Language toggle -->
|
||||
<div class="text-end mb-3">
|
||||
<button class="btn btn-outline-secondary btn-sm fl-lang-btn btn-primary" data-lang="en">EN</button>
|
||||
<button class="btn btn-outline-secondary btn-sm fl-lang-btn" data-lang="es">ES</button>
|
||||
</div>
|
||||
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-8">
|
||||
|
||||
<!-- 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>
|
||||
<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>
|
||||
|
||||
<!-- Progress bar -->
|
||||
<div class="fl-intake-progress mb-4">
|
||||
<div class="fl-intake-progress-step active"></div>
|
||||
<div class="fl-intake-progress-step"></div>
|
||||
<div class="fl-intake-progress-step"></div>
|
||||
<div class="fl-intake-progress-step"></div>
|
||||
</div>
|
||||
<div class="text-muted mb-3 small fl-step-counter">Step 1 of 4</div>
|
||||
|
||||
<!-- DV safety check (always first) -->
|
||||
<div class="alert alert-warning mb-4" style="font-size:0.88rem;">
|
||||
<span data-lang="en"><strong>Safety Check:</strong> If you are in danger, call 911.
|
||||
DV Hotline: 1-800-799-7233. Miami-Dade Safe Space: (305) 758-2546.
|
||||
<a href="https://www.google.com" target="_blank" class="btn btn-sm btn-danger ms-2">Quick Exit</a></span>
|
||||
<span data-lang="es" style="display:none;"><strong>Verificación de Seguridad:</strong> Si está en peligro, llame al 911.
|
||||
Línea de violencia doméstica: 1-800-799-7233.
|
||||
<a href="https://www.google.com" target="_blank" class="btn btn-sm btn-danger ms-2">Salida Rápida</a></span>
|
||||
</div>
|
||||
|
||||
<form method="post" action="/family-law/intake/submit" class="fl-intake-form"
|
||||
t-att-data-case-type="case_type or ''">
|
||||
<input type="hidden" name="csrf_token" t-att-value="request.csrf_token()"/>
|
||||
<input type="hidden" name="case_type" t-att-value="case_type or 'child_support'" id="intake_case_type"/>
|
||||
|
||||
<!-- STEP 1: Case Type & Basic Info -->
|
||||
<div class="fl-intake-step active" id="step-1">
|
||||
<h5 class="mb-3" data-lang="en">Step 1 — Case Type & Your Information</h5>
|
||||
<h5 class="mb-3" data-lang="es" style="display:none;">Paso 1 — Tipo de Caso e Información Personal</h5>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label fw-semibold" data-lang="en">Type of Case</label>
|
||||
<label class="form-label fw-semibold" data-lang="es" style="display:none;">Tipo de Caso</label>
|
||||
<select name="case_type_select" id="case_type_select" class="form-select"
|
||||
onchange="document.getElementById('intake_case_type').value=this.value">
|
||||
<option value="modification" t-att-selected="case_type == 'modification' and 'selected' or None">Child Support Modification (FL 61.14)</option>
|
||||
<option value="paternity" t-att-selected="case_type == 'paternity' and 'selected' or None">Establish Paternity (FL 742.10)</option>
|
||||
<option value="child_support" t-att-selected="(not case_type or case_type == 'child_support') and 'selected' or None">Child Support (New Order)</option>
|
||||
<option value="dissolution" t-att-selected="case_type == 'dissolution' and 'selected' or None">Dissolution of Marriage (FL 61.052)</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label fw-semibold" data-lang="en">Your Full Legal Name</label>
|
||||
<label class="form-label fw-semibold" data-lang="es" style="display:none;">Su Nombre Legal Completo</label>
|
||||
<input type="text" name="petitioner_name" class="form-control"
|
||||
placeholder="First Middle Last" required="required"/>
|
||||
</div>
|
||||
|
||||
<div class="row g-3">
|
||||
<div class="col-md-6">
|
||||
<label class="form-label fw-semibold" data-lang="en">Your Email</label>
|
||||
<label class="form-label fw-semibold" data-lang="es" style="display:none;">Su Correo Electrónico</label>
|
||||
<input type="email" name="petitioner_email" class="form-control"
|
||||
placeholder="you@email.com" required="required"/>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label class="form-label fw-semibold" data-lang="en">Your Phone</label>
|
||||
<label class="form-label fw-semibold" data-lang="es" style="display:none;">Su Teléfono</label>
|
||||
<input type="tel" name="petitioner_phone" class="form-control" placeholder="(305) 555-0000"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3 mt-3">
|
||||
<label class="form-label fw-semibold" data-lang="en">Your Address (Miami-Dade County)</label>
|
||||
<label class="form-label fw-semibold" data-lang="es" style="display:none;">Su Dirección (Condado de Miami-Dade)</label>
|
||||
<input type="text" name="petitioner_address" class="form-control" placeholder="Street Address"/>
|
||||
<input type="text" name="petitioner_city" class="form-control mt-2" placeholder="City"/>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label fw-semibold" data-lang="en">Florida Resident Since</label>
|
||||
<label class="form-label fw-semibold" data-lang="es" style="display:none;">Residente de Florida Desde</label>
|
||||
<input type="date" name="fl_resident_since" class="form-control"/>
|
||||
<div class="form-text" data-lang="en">Must be at least 6 months before filing date for dissolution (FL 61.021).</div>
|
||||
<div class="form-text" data-lang="es" style="display:none;">Debe ser al menos 6 meses antes de la fecha de presentación para la disolución (FL 61.021).</div>
|
||||
</div>
|
||||
|
||||
<div class="d-flex justify-content-end">
|
||||
<button type="button" class="btn btn-primary fl-next-btn">
|
||||
<span data-lang="en">Next →</span>
|
||||
<span data-lang="es" style="display:none;">Siguiente →</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- STEP 2: Other Party & Children -->
|
||||
<div class="fl-intake-step" id="step-2">
|
||||
<h5 class="mb-3" data-lang="en">Step 2 — Other Party & Children</h5>
|
||||
<h5 class="mb-3" data-lang="es" style="display:none;">Paso 2 — Otra Parte e Hijos</h5>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label fw-semibold" data-lang="en">Other Party's Full Name (Respondent)</label>
|
||||
<label class="form-label fw-semibold" data-lang="es" style="display:none;">Nombre Completo de la Otra Parte (Respondente)</label>
|
||||
<input type="text" name="respondent_name" class="form-control"
|
||||
placeholder="First Middle Last" required="required"/>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label fw-semibold" data-lang="en">Does the other party have an attorney?</label>
|
||||
<label class="form-label fw-semibold" data-lang="es" style="display:none;">¿La otra parte tiene un abogado?</label>
|
||||
<div>
|
||||
<div class="form-check form-check-inline">
|
||||
<input class="form-check-input" type="radio" name="respondent_has_counsel" value="yes" id="counsel_yes"/>
|
||||
<label class="form-check-label" for="counsel_yes" data-lang="en">Yes</label>
|
||||
<label class="form-check-label" for="counsel_yes" data-lang="es" style="display:none;">Sí</label>
|
||||
</div>
|
||||
<div class="form-check form-check-inline">
|
||||
<input class="form-check-input" type="radio" name="respondent_has_counsel" value="no" id="counsel_no" checked="checked"/>
|
||||
<label class="form-check-label" for="counsel_no" data-lang="en">No</label>
|
||||
<label class="form-check-label" for="counsel_no" data-lang="es" style="display:none;">No</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-text text-danger" data-lang="en">If the other party has an attorney, we strongly recommend you consult one too.</div>
|
||||
<div class="form-text text-danger" data-lang="es" style="display:none;">Si la otra parte tiene un abogado, le recomendamos encarecidamente que también consulte a uno.</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label fw-semibold" data-lang="en">Number of Minor Children</label>
|
||||
<label class="form-label fw-semibold" data-lang="es" style="display:none;">Número de Hijos Menores</label>
|
||||
<select name="num_children" class="form-select">
|
||||
<option value="0">0 (no minor children)</option>
|
||||
<option value="1" selected="selected">1</option>
|
||||
<option value="2">2</option>
|
||||
<option value="3">3</option>
|
||||
<option value="4">4</option>
|
||||
<option value="5">5+</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label fw-semibold" data-lang="en">Existing Court Case Number (if modifying)</label>
|
||||
<label class="form-label fw-semibold" data-lang="es" style="display:none;">Número de Caso del Tribunal Existente (si modifica)</label>
|
||||
<input type="text" name="court_case_number" class="form-control"
|
||||
placeholder="e.g. 2023-DR-12345"/>
|
||||
<div class="form-text" data-lang="en">Leave blank if this is a new case.</div>
|
||||
<div class="form-text" data-lang="es" style="display:none;">Déjelo en blanco si es un caso nuevo.</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label fw-semibold" data-lang="en">Is there a history of domestic violence?</label>
|
||||
<label class="form-label fw-semibold" data-lang="es" style="display:none;">¿Existe un historial de violencia doméstica?</label>
|
||||
<div>
|
||||
<div class="form-check form-check-inline">
|
||||
<input class="form-check-input" type="radio" name="domestic_violence" value="yes" id="dv_yes"/>
|
||||
<label class="form-check-label" for="dv_yes" data-lang="en">Yes</label>
|
||||
<label class="form-check-label" for="dv_yes" data-lang="es" style="display:none;">Sí</label>
|
||||
</div>
|
||||
<div class="form-check form-check-inline">
|
||||
<input class="form-check-input" type="radio" name="domestic_violence" value="no" id="dv_no" checked="checked"/>
|
||||
<label class="form-check-label" for="dv_no" data-lang="en">No</label>
|
||||
<label class="form-check-label" for="dv_no" data-lang="es" style="display:none;">No</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="d-flex justify-content-between">
|
||||
<button type="button" class="btn btn-outline-secondary fl-prev-btn" data-lang="en">← Back</button>
|
||||
<button type="button" class="btn btn-outline-secondary fl-prev-btn" data-lang="es" style="display:none;">← Atrás</button>
|
||||
<button type="button" class="btn btn-primary fl-next-btn">
|
||||
<span data-lang="en">Next →</span>
|
||||
<span data-lang="es" style="display:none;">Siguiente →</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- STEP 3: Income & Financial -->
|
||||
<div class="fl-intake-step" id="step-3">
|
||||
<h5 class="mb-3" data-lang="en">Step 3 — Income Information</h5>
|
||||
<h5 class="mb-3" data-lang="es" style="display:none;">Paso 3 — Información de Ingresos</h5>
|
||||
|
||||
<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;">
|
||||
Use el <strong>ingreso neto mensual</strong> (después de impuestos, FICA y deducciones requeridas por FL 61.30(3)).
|
||||
</div>
|
||||
|
||||
<div class="row g-3 mb-3">
|
||||
<div class="col-md-6">
|
||||
<label class="form-label fw-semibold" data-lang="en">Your Monthly Net Income</label>
|
||||
<label class="form-label fw-semibold" data-lang="es" style="display:none;">Su Ingreso Neto Mensual</label>
|
||||
<div class="input-group">
|
||||
<span class="input-group-text">$</span>
|
||||
<input type="number" name="petitioner_income" class="form-control" placeholder="0.00" min="0" step="1"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label class="form-label fw-semibold" data-lang="en">Other Party's Monthly Net Income (estimated)</label>
|
||||
<label class="form-label fw-semibold" data-lang="es" style="display:none;">Ingreso Neto Mensual de la Otra Parte (estimado)</label>
|
||||
<div class="input-group">
|
||||
<span class="input-group-text">$</span>
|
||||
<input type="number" name="respondent_income" class="form-control" placeholder="0.00" min="0" step="1"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label fw-semibold" data-lang="en">Do you believe the other party is hiding income or voluntarily underemployed?</label>
|
||||
<label class="form-label fw-semibold" data-lang="es" style="display:none;">¿Cree que la otra parte está ocultando ingresos o está voluntariamente subempleada?</label>
|
||||
<div>
|
||||
<div class="form-check form-check-inline">
|
||||
<input class="form-check-input" type="radio" name="income_imputation_concern" value="yes" id="imp_yes"/>
|
||||
<label class="form-check-label" for="imp_yes">Yes</label>
|
||||
</div>
|
||||
<div class="form-check form-check-inline">
|
||||
<input class="form-check-input" type="radio" name="income_imputation_concern" value="no" id="imp_no" checked="checked"/>
|
||||
<label class="form-check-label" for="imp_no">No</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label fw-semibold" data-lang="en">Current Monthly Child Support Order (if modifying)</label>
|
||||
<label class="form-label fw-semibold" data-lang="es" style="display:none;">Orden Actual de Manutención Mensual (si modifica)</label>
|
||||
<div class="input-group">
|
||||
<span class="input-group-text">$</span>
|
||||
<input type="number" name="current_order_amount" class="form-control" placeholder="0.00" min="0" step="1"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="d-flex justify-content-between">
|
||||
<button type="button" class="btn btn-outline-secondary fl-prev-btn">← Back</button>
|
||||
<button type="button" class="btn btn-primary fl-next-btn">
|
||||
<span data-lang="en">Next →</span>
|
||||
<span data-lang="es" style="display:none;">Siguiente →</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- STEP 4: Fee Waiver & Submit -->
|
||||
<div class="fl-intake-step" id="step-4">
|
||||
<h5 class="mb-3" data-lang="en">Step 4 — Fee Waiver & Submit</h5>
|
||||
<h5 class="mb-3" data-lang="es" style="display:none;">Paso 4 — Exención de Tarifas y Enviar</h5>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label fw-semibold" data-lang="en">Household Size (including yourself)</label>
|
||||
<label class="form-label fw-semibold" data-lang="es" style="display:none;">Tamaño del Hogar (incluyéndose usted)</label>
|
||||
<select name="household_size" class="form-select">
|
||||
<option value="1">1</option>
|
||||
<option value="2">2</option>
|
||||
<option value="3" selected="selected">3</option>
|
||||
<option value="4">4</option>
|
||||
<option value="5">5</option>
|
||||
<option value="6">6+</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="checkbox" name="fee_waiver_request" id="fee_waiver_check" value="yes"/>
|
||||
<label class="form-check-label" for="fee_waiver_check" data-lang="en">
|
||||
I would like to apply for a filing fee waiver (FL 57.082 — Civil Indigent Status).
|
||||
Eligibility: household income at or below 200% of federal poverty level.
|
||||
</label>
|
||||
<label class="form-check-label" for="fee_waiver_check" data-lang="es" style="display:none;">
|
||||
Deseo solicitar una exención de tarifas de presentación (FL 57.082 — Estado Civil Indigente).
|
||||
Elegibilidad: ingresos del hogar iguales o inferiores al 200% del nivel federal de pobreza.
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-4">
|
||||
<label class="form-label fw-semibold" data-lang="en">Additional Notes (optional)</label>
|
||||
<label class="form-label fw-semibold" data-lang="es" style="display:none;">Notas Adicionales (opcional)</label>
|
||||
<textarea name="notes" class="form-control" rows="3"
|
||||
placeholder="Any other information you'd like us to know about your case..."></textarea>
|
||||
</div>
|
||||
|
||||
<div class="mb-4">
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="checkbox" name="acknowledge_disclaimer" id="acknowledge" required="required"/>
|
||||
<label class="form-check-label" for="acknowledge" style="font-size:0.85rem;" data-lang="en">
|
||||
I understand that ActiveBlue Family Law is a case management tool, NOT a law firm.
|
||||
This service does not provide legal advice. I will verify all documents with
|
||||
the court before filing. <strong>Required to submit.</strong>
|
||||
</label>
|
||||
<label class="form-check-label" for="acknowledge" style="font-size:0.85rem;display:none;" data-lang="es">
|
||||
Entiendo que ActiveBlue Family Law es una herramienta de gestión de casos, NO una firma de abogados.
|
||||
Este servicio no proporciona asesoramiento legal. Verificaré todos los documentos con el tribunal antes de presentarlos.
|
||||
<strong>Requerido para enviar.</strong>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="d-flex justify-content-between">
|
||||
<button type="button" class="btn btn-outline-secondary fl-prev-btn">← Back</button>
|
||||
<button type="submit" class="btn btn-success btn-lg">
|
||||
<span data-lang="en">Submit & Create My Case →</span>
|
||||
<span data-lang="es" style="display:none;">Enviar y Crear Mi Caso →</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
<!-- ══ Intake confirmation page ════════════════════════════════════ -->
|
||||
<template id="website_intake_confirm" name="FL Intake — Confirmation">
|
||||
<t t-call="website.layout">
|
||||
<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>
|
||||
<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>.
|
||||
</p>
|
||||
<p class="lead" data-lang="es" style="display:none;">
|
||||
El caso <strong><t t-esc="case_name"/></strong> ya está abierto.
|
||||
Se ha enviado una confirmación por correo electrónico a <strong><t t-esc="petitioner_email"/></strong>.
|
||||
</p>
|
||||
<div class="mt-4">
|
||||
<a href="/my/cases" class="btn btn-primary btn-lg me-2" data-lang="en">View My Cases →</a>
|
||||
<a href="/my/cases" class="btn btn-primary btn-lg me-2" data-lang="es" style="display:none;">Ver Mis Casos →</a>
|
||||
<a href="/my/cases/calculator" class="btn btn-outline-secondary btn-lg" data-lang="en">Support Calculator</a>
|
||||
<a href="/my/cases/calculator" class="btn btn-outline-secondary btn-lg" data-lang="es" style="display:none;">Calculadora</a>
|
||||
</div>
|
||||
<t t-if="fee_waiver_eligible">
|
||||
<div class="alert alert-success mt-4 text-start" style="max-width:600px;margin:auto;">
|
||||
<strong data-lang="en">💚 You may qualify for a filing fee waiver (FL 57.082).</strong>
|
||||
<strong data-lang="es" style="display:none;">💚 Puede calificar para una exención de tarifas de presentación (FL 57.082).</strong>
|
||||
<span data-lang="en"> A Fee Waiver Application has been prepared in your case documents.</span>
|
||||
<span data-lang="es" style="display:none;"> Una Solicitud de Exención de Tarifas ha sido preparada en los documentos de su caso.</span>
|
||||
</div>
|
||||
</t>
|
||||
<t t-if="attorney_referral">
|
||||
<div class="fl-attorney-referral-banner mt-4 text-start" style="max-width:600px;margin:auto;">
|
||||
<h5 data-lang="en">⚠ Attorney Consultation Recommended</h5>
|
||||
<h5 data-lang="es" style="display:none;">⚠ Se Recomienda Consulta con Abogado</h5>
|
||||
<p data-lang="en">Based on your case details (opposing counsel or DV concern), we strongly recommend
|
||||
consulting with a licensed Florida attorney before proceeding.
|
||||
<a href="https://www.flvlp.org" target="_blank">FL Volunteer Lawyers Project</a></p>
|
||||
<p data-lang="es" style="display:none;">Según los detalles de su caso, recomendamos encarecidamente consultar con un abogado de Florida con licencia antes de continuar.</p>
|
||||
</div>
|
||||
</t>
|
||||
</div>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user