v2.2.1
Fixed
- Plan and quote lifecycles drifted apart on reject/resend/cancel
(#162). Three sync gaps reported during functional testing of the
renegotiation workflow:- Reactivating a rejected treatment plan and confirming it again
never generated a new quote — the plan stayed tied to the old
rejected one. Re-confirming now provisions a fresh quote and
relinks the plan (the documented renegotiation flow had the same
stale-link bug and is fixed too). - Accepting a new quote version (the Resend flow) did not advance
the plan: the version chain never carried the plan link. The plan
now follows the new version, and a plan closed as rejected by the
patient returns to In progress automatically when the patient
accepts the resent quote. - Cancelling a quote directly from the Quotes module left the plan
stuck in Pending acceptance forever. The linked plan now returns
to Draft, ready to edit and re-confirm.
- Reactivating a rejected treatment plan and confirming it again
- Reopening a plan whose quote had expired returned a 500. The
invalidexpired → cancelledbudget transition is now skipped. - Terminal quotes no longer freeze their plan. Only sent or
accepted quotes lock the plan for editing; cancelled, rejected and
expired ones are history.
Added
- "Resend" button on the quote detail page — clones a rejected,
expired or cancelled quote into a new draft version (with a fresh
public link) and navigates to it. Available in all four UI languages.
Install
curl -O https://raw.githubusercontent.com/martinezsalmeron/dentalpin/main/docker-compose.prod.yml
curl -O https://raw.githubusercontent.com/martinezsalmeron/dentalpin/main/Caddyfile
curl -o .env https://raw.githubusercontent.com/martinezsalmeron/dentalpin/main/.env.prod.example
# set PUBLIC_URL, POSTGRES_PASSWORD, SECRET_KEY
# and DENTALPIN_VERSION=2.2.1 to pin this release, then:
docker compose -f docker-compose.prod.yml up -dImages (amd64 + arm64): ghcr.io/martinezsalmeron/dentalpin-backend:2.2.1 · ghcr.io/martinezsalmeron/dentalpin-frontend:2.2.1
What's Changed
- fix: plan ↔ quote lifecycle desync on reject/resend/cancel by @martinezsalmeron in #164
Full Changelog: v2.2.0...v2.2.1