Commit Graph

3 Commits

Author SHA1 Message Date
c1b5947b7c Make module installable on stock Odoo 18 (verified via test DB install)
Caught and fixed by running an actual install on a throwaway DB:

- Strip 29 # comment lines from ir.model.access.csv (Odoo CSV loader treats
  them as malformed rows → IndexError); 79 data rows preserved
- Remove obsolete ir.cron.numbercall field (removed in Odoo 17+) from 4 cron
  records in fl_deadline_rules.xml
- Rename <tree>→<list> across 26 sites; inside x2many inline views Odoo 18 no
  longer recognizes <tree>, which made it fall back to the outer model and
  reject inner fields ("Field 'partner_id' does not exist in model 'fl.case'")
- Add store=True to non-stored computed fields referenced by search filters,
  which Odoo 18 now rejects as unsearchable:
  - fl.case: overdue_deadline_count, next_deadline_label
  - fl.deposition: notice_valid

Module loads cleanly: 31 fl.* models registered, no errors.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-30 03:28:55 +00:00
983964c6d2 Migrate views to Odoo 17/18 syntax; fix pre-existing XML blockers
- Convert all 124 attrs="{...}" across 13 view files to direct Odoo 17/18
  attributes (invisible/readonly/required with Python expressions); prefix-domain
  OR/AND/NOT and operators handled (e.g. "(is_overdue or days_until_due > 7) and completed")
- Fix pre-existing XML errors that blocked module load on any version:
  - Replace invalid &nbsp; HTML entity with &#160; in 4 files (reports + portal)
  - Merge duplicate style= attributes (3 spots in website_intake_templates)
  - Replace 3 illegal <t t-if> embedded in class="" attributes with t-attf-class
- All 44 module XML files now parse clean

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-29 14:15:25 +00:00
7bc0cc8554 Add conflict-of-interest check engine; gate stage advancement at Intake
- New fl.conflict.check model: screens petitioner/respondent/party_ids names
  against parties on other open cases (exact partner match + difflib fuzzy
  match at 0.85 threshold); skips folded/closed stages
- Runs automatically as the first action in fl.case.create; logs conflicts to
  chatter with matched-case detail and never silently passes
- fl.case gains conflict_check_passed/conflict_check_id/conflict_check_ids;
  write() blocks advancing stage_id past Intake until the check passes
- Admin-only action_override requires a written justification, stamps user/date,
  and flips conflict_check_passed True with a chatter audit entry
- Add conflict check form/tree/search views, action, Cases sub-menu item,
  case form banner + Run Conflict Check button, and Kanban conflict badge
- ACL entries for fl.conflict.check (admin full, paralegal no-delete)
- Finish Claude migration cleanup in fl_analysis.py (model_used default,
  docstring/help text)
- Add .gitignore for Python artifacts

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 18:19:32 +00:00