- Fix _read_group override crash (dict_values not subscriptable) in sale_order.py
- Migrate _fc_tool_claims_stats from deprecated read_group() to _read_group() API
- Enrich client details tool with funding history, invoice status, prev-funded devices
- Add Client Status Lookup tool (search by name, returns orders/invoices/next steps)
- Add ADP Billing Period tool (invoiced amounts, paid/unpaid, submission deadlines)
- Update AI agent system prompt with all 5 tools and usage examples
When customers pay for ADP quotations through the portal, the system
was charging the full order amount (ADP + client portions combined).
Now correctly charges only the client portion (25% for REG clients).
Changes:
- Override _get_prepayment_required_amount() to return client portion
- Override _has_to_be_paid() to skip payment for 100% ADP-funded orders
- Add portal controller to cap payment amount at client portion
- Add portal template showing ADP funding breakdown to customer
Standalone module extracted from fusion_claims providing technician
scheduling, route simulation with Google Maps, GPS tracking, and
cross-instance task sync between odoo-westin and odoo-mobility.
Includes fix for route simulation: added Directions API error logging
to diagnose silent failures from conflicting Google Maps API keys.
Made-with: Cursor
is_rental_order is a computed field, not passed in vals during create.
Use in_rental_app context flag in create() and add onchange handler
so sale type sets to 'Rentals' immediately when toggled in the form.
Made-with: Cursor
Rental orders no longer show the "Authorizer Required?" question or
the Authorizer field. The sale type is automatically set to 'Rentals'
when creating or confirming a rental order. Validation logic also
skips authorizer checks for rental sale type.
Made-with: Cursor
Odoo 19 replaced category_id with privilege_id on res.groups.
Keep only privilege_id=False to clear it from the dropdown.
Co-authored-by: Cursor <cursoragent@cursor.com>
Rename to "Fusion: Document Lock Override" for clarity, clear
privilege_id so it appears under extra permissions instead of the
hierarchy dropdown, and add a descriptive tooltip explaining its
temporary nature and dependency on the settings toggle.
Co-authored-by: Cursor <cursoragent@cursor.com>
Setting privilege_id eval="False" forces Odoo to null out the existing
database value on upgrade. Simply omitting the field did not clear it.
Co-authored-by: Cursor <cursoragent@cursor.com>
Remove privilege_id from portal groups so they no longer appear in the
User settings dropdown (they are auto-assigned from Contact form).
Restrict Fusion Claims settings view to managers only.
Co-authored-by: Cursor <cursoragent@cursor.com>
Users without fax/RC groups could not open Sale Orders, Invoices, or
Contacts because the One2many computed fields triggered AccessError
on fusion.fax. Now base.group_user gets read-only access so computed
fields work silently, while all UI elements (smart buttons, header
buttons, menus, partner fields, settings) are restricted to the
proper security groups. Both modules now use Odoo 19 privilege
pattern for the user settings dropdown.
Co-authored-by: Cursor <cursoragent@cursor.com>
- New 'pending' status allows tasks to be created without a schedule,
acting as a queue for unscheduled work that gets assigned later
- Pending group appears in the Delivery Map sidebar with amber color
- Other modules can create tasks in pending state for scheduling
- scheduled_date no longer required (null for pending tasks)
- New Pending Tasks menu item under Field Service
- Pending filter added to search view
Co-authored-by: Cursor <cursoragent@cursor.com>
- New standalone module to collect fixes for default Odoo behavior
- Fix#1: account_followup never clears followup_next_action_date
when invoices are paid, causing collection emails to fully-paid
clients. Hooks into _invoice_paid_hook to auto-clear stale data.
- Harden Fusion Accounting followup queries with amount_residual > 0
filter and add balance check before sending emails
Co-authored-by: Cursor <cursoragent@cursor.com>
- Add portal gradient branding settings with 4 presets (Green/Teal,
Blue/Purple, Sunset Orange, Dark Slate) and custom color picker
- Live preview in settings, onchange updates colors reactively
- Dynamic gradient applied across portal home, CSS, and card elements
- Fix after photos visibility (conditional on resolved=yes)
- Fix technician section gating on portal repair form
- Move Create Sale Order button to form header for visibility
- Fix portal home row width inconsistency (xpath target change)
Co-authored-by: Cursor <cursoragent@cursor.com>