Skip to main content

Rentiva v4.60.0 — Matured Payout Fix + Dead SaaS Scaffolding Removal

· 2 min read
MaxHandMade
Maintainer

Matured vendor payouts were silently skipped on single-site installs: a dead SaaS "control plane" gate in the matured-payout worker required a multi-tenant registry row that a normal install never provisions, so no scheduled payout ever finalized automatically. This release removes that gate — the worker now runs unconditionally — and clears out the unused multi-tenant orchestration scaffolding that caused it.

What's New

Critical Fix

  • Matured vendor payouts now process on single-site installs. The matured-payout worker (MaturedPayoutJob::run()) was gated behind a SaaS control-plane is_operational() check that required a tenant-registry row which a normal (non-SaaS-hosted) install never creates — so every scheduled run exited early without finalizing a single payout. The gate has been removed; the worker now runs unconditionally. A regression test reproduces the production state (no tenant row present) and asserts the matured payout is finalized.

Change

  • Removed unused multi-tenant SaaS orchestration scaffolding. Six dead classes — the control-plane guard, usage metering, cycle manager, tenant provisioner, quota exception, and their migration — were deleted, the usage-metering call sites were stripped from the financial layer, and a one-time v3.9.0 upgrade migration drops the two now-empty database tables. The tenant-context layer used for financial data scoping is intentionally retained.

Tests

The full suite stays green at 1,263 tests / 3,839 assertions, 0 failures. The four obsolete orchestration test files were removed and a MaturedPayoutJob regression test was added. No regression.