- 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>
212 lines
15 KiB
XML
212 lines
15 KiB
XML
<?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>
|