Rename module fusion_authorizer_portal -> fusion_portal everywhere: manifest/assets, controllers, models, views, JS (odoo.define + asset URLs), migration MODULE constants; plus cross-module refs in fusion_schedule, fusion_repairs, fusion_quotations (depends + inherit_id) and the pdf_filler import in fusion_claims. Add rename_module.sql for the one-time in-place DB rename (ir_module_module, ir_model_data, ir_ui_view.key, ir_module_module_dependency) required on installed envs before -u fusion_portal. Document the rename gotcha as rule 16 in CLAUDE.md. Redesign the Accessibility Assessment selector: replace Font Awesome icon tiles with photo-banner cards using 7 optimized images (1000x750 PNG -> 800x600 JPEG, ~8MB -> 488KB), per-type colour accent bar + centered pill button, hover lift/zoom. Images ship as module static files so they deploy/sync with the module. Drop the regenerable graphify-out cache from the module. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
173 lines
10 KiB
XML
173 lines
10 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<odoo>
|
|
<!-- Public Assessment Booking Page -->
|
|
<template id="portal_book_assessment" name="Book an Assessment">
|
|
<t t-call="website.layout">
|
|
<div class="container py-5" style="max-width: 700px;">
|
|
|
|
<!-- Success Message -->
|
|
<t t-if="success">
|
|
<div class="alert alert-success text-center" role="alert">
|
|
<h4 class="alert-heading"><i class="fa fa-check-circle"></i> Assessment Booked!</h4>
|
|
<p>Thank you! Your assessment has been scheduled. We will confirm the date and time shortly.</p>
|
|
<p>You will receive a text message confirmation.</p>
|
|
<hr/>
|
|
<a href="/book-assessment" class="btn btn-outline-success">Book Another</a>
|
|
</div>
|
|
</t>
|
|
|
|
<!-- Error Message -->
|
|
<t t-if="error">
|
|
<div class="alert alert-danger" role="alert">
|
|
<i class="fa fa-exclamation-triangle"></i> <t t-esc="error"/>
|
|
</div>
|
|
</t>
|
|
|
|
<!-- Booking Form -->
|
|
<t t-if="not success">
|
|
<div class="text-center mb-4">
|
|
<h2 style="color: #1a5276;">Book an Accessibility Assessment</h2>
|
|
<p class="text-muted">Fill out the form below and our team will schedule a home visit.</p>
|
|
</div>
|
|
|
|
<form action="/book-assessment/submit" method="post" class="card shadow-sm">
|
|
<input type="hidden" name="csrf_token" t-att-value="request.csrf_token()"/>
|
|
<div class="card-body p-4">
|
|
|
|
<!-- Assessment Type -->
|
|
<div class="mb-3">
|
|
<label class="form-label fw-bold">What type of modification?<span class="text-danger"> *</span></label>
|
|
<select name="assessment_type" class="form-select" required="">
|
|
<option value="">Select...</option>
|
|
<t t-foreach="assessment_types" t-as="atype">
|
|
<option t-att-value="atype[0]"><t t-esc="atype[1]"/></option>
|
|
</t>
|
|
</select>
|
|
</div>
|
|
|
|
<!-- Funding Source (2026-04 portal audit fix —
|
|
required so the generated sale order enters
|
|
the correct downstream workflow: MOD, ODSP, etc) -->
|
|
<div class="mb-3">
|
|
<label class="form-label fw-bold">How is this project being funded?<span class="text-danger"> *</span></label>
|
|
<select name="funding_source" class="form-select" required="">
|
|
<option value="">Select...</option>
|
|
<option value="march_of_dimes">March of Dimes</option>
|
|
<option value="odsp">ODSP</option>
|
|
<option value="wsib">WSIB</option>
|
|
<option value="insurance">Private Insurance</option>
|
|
<option value="direct_private">Private Pay (Direct)</option>
|
|
<option value="other">Other</option>
|
|
</select>
|
|
<small class="form-text text-muted">
|
|
This determines which workflow the case enters after the visit.
|
|
</small>
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
<label class="form-label fw-bold">What are you looking for?</label>
|
|
<textarea name="modification_requested" class="form-control" rows="2"
|
|
placeholder="e.g. Curved stairlift for 2-storey home, bathroom grab bars..."></textarea>
|
|
</div>
|
|
|
|
<hr/>
|
|
<h5 class="mb-3" style="color: #1a5276;">Client Information</h5>
|
|
|
|
<div class="row">
|
|
<div class="col-md-6 mb-3">
|
|
<label class="form-label">Client Name<span class="text-danger"> *</span></label>
|
|
<input type="text" name="client_name" class="form-control" required="" placeholder="Full name"/>
|
|
</div>
|
|
<div class="col-md-6 mb-3">
|
|
<label class="form-label">Phone Number<span class="text-danger"> *</span></label>
|
|
<input type="tel" name="client_phone" class="form-control" required="" placeholder="e.g. 416-555-1234"/>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
<label class="form-label">Email</label>
|
|
<input type="email" name="client_email" class="form-control" placeholder="Optional"/>
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
<label class="form-label">Street Address</label>
|
|
<input type="text" name="client_street" class="form-control" placeholder="e.g. 5 Nottawasaga Cres"/>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col-md-4 mb-3">
|
|
<label class="form-label">City</label>
|
|
<input type="text" name="client_city" class="form-control" placeholder="e.g. Brampton"/>
|
|
</div>
|
|
<div class="col-md-4 mb-3">
|
|
<label class="form-label">Province</label>
|
|
<input type="text" name="client_province" class="form-control" value="Ontario"/>
|
|
</div>
|
|
<div class="col-md-4 mb-3">
|
|
<label class="form-label">Postal Code</label>
|
|
<input type="text" name="client_postal" class="form-control" placeholder="e.g. L6Y 4G1"/>
|
|
</div>
|
|
</div>
|
|
|
|
<hr/>
|
|
<h5 class="mb-3" style="color: #1a5276;">Assessment Details</h5>
|
|
|
|
<div class="row">
|
|
<div class="col-md-6 mb-3">
|
|
<label class="form-label">Preferred Assessment Date</label>
|
|
<input type="date" name="assessment_date" class="form-control"/>
|
|
</div>
|
|
<div class="col-md-6 mb-3">
|
|
<label class="form-label">Assign Sales Rep</label>
|
|
<select name="sales_rep_id" class="form-select">
|
|
<option value="">Auto-assign</option>
|
|
<t t-foreach="sales_reps" t-as="rep">
|
|
<option t-att-value="rep.id"><t t-esc="rep.name"/></option>
|
|
</t>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
<label class="form-label">Booking Source</label>
|
|
<select name="booking_source" class="form-select">
|
|
<option value="portal" selected="">Online Booking</option>
|
|
<option value="phone_authorizer">Phone - Authorizer Calling</option>
|
|
<option value="phone_client">Phone - Client Calling</option>
|
|
<option value="walk_in">Walk-In</option>
|
|
</select>
|
|
</div>
|
|
|
|
<hr/>
|
|
<h5 class="mb-3" style="color: #1a5276;">Authorizer / OT (Optional)</h5>
|
|
<p class="text-muted small">If an authorizer or occupational therapist is involved, provide their details.</p>
|
|
|
|
<div class="row">
|
|
<div class="col-md-6 mb-3">
|
|
<label class="form-label">Authorizer Name</label>
|
|
<input type="text" name="authorizer_name" class="form-control"/>
|
|
</div>
|
|
<div class="col-md-6 mb-3">
|
|
<label class="form-label">Authorizer Email</label>
|
|
<input type="email" name="authorizer_email" class="form-control"/>
|
|
</div>
|
|
</div>
|
|
<div class="mb-3">
|
|
<label class="form-label">Authorizer Phone</label>
|
|
<input type="tel" name="authorizer_phone" class="form-control"/>
|
|
</div>
|
|
|
|
</div>
|
|
<div class="card-footer text-center bg-white border-top-0 pb-4">
|
|
<button type="submit" class="btn btn-lg" style="background-color: #1a5276; color: white;">
|
|
<i class="fa fa-calendar-check-o"></i> Book Assessment
|
|
</button>
|
|
</div>
|
|
</form>
|
|
</t>
|
|
|
|
</div>
|
|
</t>
|
|
</template>
|
|
</odoo>
|