gsinghpal d29857078a fix(manager-desk): unstick the spinner + live updates that don't flash
Root cause of the stuck "Loading manager data..." spinner: the overview
endpoint included a search_count on sale.order.x_fc_workflow_stage,
which is a non-stored computed field. Odoo 19 raised:

  ValueError: Cannot convert sale.order.x_fc_workflow_stage to SQL
              because it is not stored

The controller silently logged the error; the JS caught and swallowed
the RPC failure, leaving state.overview=null forever. So the UI just
kept spinning while production changed around the manager.

Fixes:

1. Controller (manager_controller.py)
   - "Awaiting assignment SOs" is now computed from STORED fields only:
       state='sale' AND x_fc_receiving_status='inspected'
             AND x_fc_assigned_manager_id=False
     Same stage, legal SQL.
   - Whole endpoint wrapped in try/except; failures return
     {'ok': False, 'error': '...'} so the UI can surface them instead
     of dying silently.
   - Response carries a payload_hash (md5 of the JSON body minus
     user_name). If the client sends back known_hash and nothing has
     moved, the server returns {'unchanged': True, 'payload_hash': ...}
     and the client skips the repaint entirely. Keeps the UI quiet
     between polls.

2. OWL component (manager_dashboard.js)
   - Poll cadence tightened from 30s → 8s (production-pace).
   - Unchanged payloads don't mutate state.overview → no re-render,
     no flash. Live dot just updates its tooltip.
   - Changed payloads do an in-place MERGE of the overview (copying
     scalars/arrays onto the existing reactive object) instead of
     replacing it wholesale. OWL's diff only re-renders rows that
     actually moved.
   - isFetching guard so overlapping polls can't stack up.
   - state.loadError surfaces backend errors in a red banner with a
     Retry button — no more silent spinner.

3. UX
   - Live dot next to the title: soft green at rest, bright green
     pulsing during a fetch.
   - "Updated Xs ago" subtitle uses a getter so the label freshens
     between polls.
   - Manual Refresh button next to Quick/Detailed toggle.
   - Spinner only appears on the genuine first load; gone forever
     once the first payload lands.

Verified: the old crashing query now runs clean on demo data; odoo
logs show zero errors for the last 5 minutes of polling.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-18 18:06:04 -04:00
2026-03-16 08:14:56 -04:00
2026-02-22 01:37:50 -05:00
2026-02-22 01:37:50 -05:00
2026-02-22 01:37:50 -05:00
2026-04-12 09:09:50 -04:00
2026-04-13 02:35:35 -04:00
2026-04-04 15:37:16 -04:00
2026-03-09 15:21:22 -04:00
2026-03-16 08:14:56 -04:00
2026-04-12 09:09:50 -04:00
2026-03-16 08:14:56 -04:00
2026-04-17 17:31:12 -04:00
2026-03-17 13:32:08 -04:00
2026-03-16 08:14:56 -04:00
2026-03-20 11:46:41 -04:00
2026-03-13 12:38:28 -04:00
2026-03-13 12:38:28 -04:00
2026-03-14 12:04:20 -04:00
2026-03-11 12:15:53 -04:00
2026-03-16 08:14:56 -04:00
2026-04-12 09:09:50 -04:00
2026-03-16 08:14:56 -04:00
2026-04-07 22:03:20 -04:00
2026-03-13 12:38:28 -04:00
2026-04-04 15:37:16 -04:00
2026-03-26 15:16:51 -04:00
2026-03-09 15:21:22 -04:00
2026-03-17 13:32:08 -04:00
2026-04-12 09:09:50 -04:00
2026-03-13 12:38:28 -04:00
2026-04-17 17:31:12 -04:00
2026-03-09 15:21:22 -04:00
2026-02-22 01:22:18 -05:00
2026-04-07 21:47:15 -04:00
2026-02-22 01:37:50 -05:00
2026-03-13 12:38:28 -04:00
2026-03-13 12:38:28 -04:00
2026-04-17 17:31:12 -04:00
2026-02-22 01:22:18 -05:00
2026-04-12 09:11:35 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-03-16 08:14:56 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-12 09:11:35 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-12 09:11:35 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
Description
Odoo 19 custom modules
211 MiB
Languages
Python 55.9%
HTML 26.1%
JavaScript 14.9%
SCSS 1.8%
CSS 0.8%
Other 0.4%