Skip to content

Release Notes

All roots_hemms_* modules track the Odoo major version they ship against; the current series is 18.0.1.0. Releases are tagged by quarter rather than by SemVer minor — Q1, Q2, ... map onto bundles of related modules that ship together. Each module's own __manifest__.py carries the authoritative version string (18.0.1.0.0 across the suite today).

Format

Each release lists Added, Changed, Fixed, and Deprecated in that order. Dates reflect the merge into main on github.com/jakapolr/hemms-demo.

v18.0.1.0 — 2026-05-23 (current)

The first end-to-end stable release. Bundles Q1 → Q7 plus a post-Q7 navigation-polish drop. All quarters were merged through pull requests with green CI; 177 HEMMS tests gate every PR.

Added

  • roots_hemms_workflow — 5-stage repair workflow (Submitted → Pending Review → In Repair → Awaiting Pickup → Received), per-stage SLA hours, roots_is_sla_breached search, immutable hemms.stage.transition.log audit trail. (Q1, May 2026)
  • roots_hemms_criticality — 2D Value × Risk matrix with green / yellow / red roots_criticality_color, bilingual label compute for the active language. (Q1, May 2026)
  • roots_hemms_asset_master — Brand / Model master, government Ref. No. uniqueness, condition tracking (in-use / broken / deteriorated / lost / unused). (Q1, May 2026)
  • roots_hemms_asset_inspection — Annual ปจป. stock-check with committee assignment, condition propagation, sequence (AI/YYYY/NNNNN), PDF report. (Q1, May 2026)
  • roots_hemms_pm — Hospital PM kinds (3 bilingual seeds), the PM Scheduled initial stage, PM-aware default stage routing. (Q1, May 2026)
  • roots_hemms_spare_parts — Per-equipment spare-template lines, Stock Request running number, daily critical-low-stock cron, auto-draft Consumption picking when a PM cron fires. (Q2, 2026-05-22)
  • roots_hemms_service_contracts — Contract types (Warranty / Extended / MA / Spare-only / Labor-only), per-kind coverage matrix with included_in_contract + billable_to_hospital, auto-link to maintenance requests, daily lifecycle cron, 60-day renewal alert, bilingual _name_search. (Q3, 2026-05-22)
  • roots_hemms_signaturesign_oca bridge over hemms.asset.inspection and hemms.service.contract. Signed PDF auto-attached to chatter on _check_signed. Internal in-app signing plus portal route for vendors. (Q4, 2026-05-22)
  • roots_hemms_ha_report — HA Thailand Annual PM Report: hemms.ha.device.class with 82 MoPH seed rows, 3-step risk waterfall (override → device class → WHO EM-score), immutable JSON snapshot on submit, 7-section QWeb template, 3-signer e-sign (BME Head / Engineering Head / Director). (Q5, 2026-05-22)
  • roots_hemms_mass_import — XLSX upload for Equipment / Vendors / Locations, 3-step wizard (Upload → Preview → Commit), dry-run engine, idempotent business-key matching, batch-tagged delete window (7 days), strict MoPH 82-class validation, error-row XLSX export. (Q6, 2026-05-22)
  • CI/CD.github/workflows/lint.yml (ruff + pylint_odoo + oca-checks) and tests.yml (Postgres 15 + Odoo 18 container, four leaf modules pulling everything else transitively). Makefile lint/test/ci targets for local parity. (Q7, PR #5 → 08243ca)
  • Navigation polish — single top-level "Reporting" menu (Asset Inspection + HA Report under one parent), Mass Import moved to Configuration, reordered top-bar to Dashboard → Maintenance → Equipment → Asset Inspection → Service Contracts → Reporting → Configuration. English-only baseline menu labels (Thai handled via .po translations). (PR #7, 2026-05-23)

Changed

  • PM default stage routingroots_hemms_pm now overrides maintenance.request.stage_id to exclude PM-initial stages from the default selector. Without this, every new corrective request would land in PM Scheduled because that stage has the lowest sequence. (commit 3a63274, Q7)
  • numbercall dropped from cron data — Odoo 18 removed the numbercall field on ir.cron. All HEMMS crons updated. (commit b55c4cd, Q7)
  • sign_oca _sign_all requires sent stateroots_hemms_ha_report test helper now calls action_send() before _sign_all() to match the production state machine. (commit 3a63274, Q7)

Fixed

  • hemms.ha.report.line field collision — original roots_risk_tier collided with roots_hemms_criticality.roots_risk_tier; renamed to roots_ha_risk_tier and roots_ha_risk_tier_source. (commit d82f278, Q5)
  • HA report smoke-test failures — 6 install-only bugs fixed in f95afad: menu xmlid was menu_m_reports not menu_maintenance_reports; QWeb arch_db %%% collapse; sign_oca._check_signed requires state 0_sent so the test helper must call action_send() first; QWeb safe-eval blocks env['model'] and dict(_fields[...].selection) — refactored to instance helpers + t-field. (Q5 follow-up)
  • roots_hemms_mass_import delete guard_check_delete_blockers tested directly (record-rule AccessError was masking the guard inside the standard delete path). (Q6.6)
  • CI iteration fixes — bash shell explicit in tests.yml, broken architecture-doc link, --test-tags scoping, test_i4 outsider signer needs action_send() too. (commits c038fb7, b55c4cd, 3a63274, 08243ca)

Known issues

  • I1 supplier-domain test skipped in roots_hemms_service_contracts — the vendor field on contracts can't filter to supplier_rank > 0 without depending on purchase (or introducing a roots_is_vendor flag). The test is decorated @unittest.skip with a follow-up note.
  • numbercall regression — if you bring forward an older branch with numbercall="..." on a cron, install will fail on Odoo 18. Fix is a one-line XML edit.
  • Q5.2 MoPH device-class seed count is 82, not 83 — row 4 in the upstream (พ.ศ. 2564) PDF is missing. The seed honours the source document.

Deprecated

Nothing yet — this is the first stable line.

Quarterly merge table

Quarter Module(s) shipped Merge commit Date
Q1 workflow, criticality, asset_master, asset_inspection, pm various 2026-05-12 → 2026-05-19
Q2 spare_parts (+ vendored maintenance_stock) c9791f31bba093 + f15dbbb 2026-05-22
Q3 service_contracts 950b8aeade8216 2026-05-22
Q4 signature (+ vendored sign_oca) 02bd1fee56903b 2026-05-22
Q5 ha_report c5da40cf95afad 2026-05-22
Q6 mass_import 4527e8ad59f3d5 2026-05-22 → 2026-05-23
Q7 CI/CD (.github/workflows/lint.yml, tests.yml, Makefile) PR #5 → 08243ca 2026-05-23
Nav polish menu consolidation PR #7 → b0cfd62 2026-05-23

Browse the full git log for the per-commit detail, or read each quarter's design plan under Developer → Q-plans.

Migration notes

Nothing breaking to migrate yet — every release in this line is additive on top of the previous one. When the v18.0.2 line opens (depreciation + mobile interface, see Roadmap), upgrade instructions will appear in the Upgrade Guide.

Reporting issues

Find a bug or a regression?

  1. Check the Known issues list above.
  2. Search open issues on GitHub.
  3. File a new issue with the failing commit hash, the database name (hemms_demo vs hemms_private), and a make test output snippet if relevant.

For internal-deployment customers, contact your Trinity Roots support channel — see Roots Health Vertical for how that works.