add recurrence limit + follow FinanceBuddy installments to stop finite plans (v1.6.1)

This commit is contained in:
2026-07-10 09:12:30 -03:00
parent e9fc5df763
commit daac5f3b54
8 changed files with 224 additions and 8 deletions

View File

@@ -8,6 +8,13 @@ A card marked recurring **stays** as a template; on schedule, RecoReco spawns a
(non-recurring) copy into a column you choose. The template advances to the next date; the copy
keeps the fired date.
> **A note on card order.** Because the template keeps its identity (and its id) for the life of the
> plan while its due date advances, the template ends up as the *oldest* id carrying the *latest*
> date. The spawned copies, by contrast, are ordered naturally (older copy = older id = older date).
> This is intentional: a stable, editable template that stays in place is worth more than making the
> one generator card sort by date. Native Kanboard recurrence avoids the mismatch only by
> reincarnating the card every cycle, which RecoReco deliberately does not do.
RecoReco is opt-in per card and inert until you mark a card, so it needs no per-board setting. It
leaves native recurrence untouched (the two are mutually exclusive per card).
@@ -44,11 +51,29 @@ You can trigger the exact same pass by hand -- either on the CLI (`php cli recor
the **Run now** button under **Settings -> RecoReco** (admin only). The button and cron do the
identical thing.
## Stopping a finite plan
By default a recurring card recurs forever. To make it stop, give it a **limit** in the Recurring
schedule dialog:
- **Stop after N recurrences** -- a plain count; blank or 0 means recur forever. RecoReco keeps a
1-based progress counter and turns the recurrence off once it passes the limit.
- **Follow FinanceBuddy installments** -- shown only on boards where FinanceBuddy is enabled (and on
by default there). RecoReco reads the card's installment total and current *live* from FinanceBuddy
(never copied) and stops after the last installment. Because the numbers are read fresh, editing
them in FinanceBuddy just works: start mid-plan (enter `222/420`), re-purchase (reset the current
installment), or extend (raise the total) -- no RecoReco bookkeeping to keep in sync.
When a followed plan ends, the parked template is left one past the last installment (`p4/3` for a
three-installment plan) as a visible "spent" marker, its recurrence off, with an activity-stream
entry recording the completion.
## Status
All five frequencies work (yearly, monthly by day, monthly by weekday, weekly, daily) with the
last-day rule, board recurrence icons, backfill with the 12-occurrence cap, the Run-now button, and
the FinanceBuddy installment hand-off.
last-day rule, board recurrence icons, backfill with the 12-occurrence cap, the Run-now button, a
recurrence limit (standalone or following FinanceBuddy installments), and the FinanceBuddy
installment hand-off.
## Requirements
@@ -64,3 +89,21 @@ no database migration. Then add the cron entry above.
## License
AGPL-3.0. See LICENSE.
## More Kanboard plugins by Ruben (drbeco)
All free and AGPL-3.0, at [code.beco.cc](https://code.beco.cc/beco):
- **[FinanceBuddy](https://code.beco.cc/beco/FinanceBuddy)** -- attach a money value (debit/credit
and installments) to cards, shown on the card and totalled per column. Pairs directly with
RecoReco: recurring bills spawn on schedule and their installments count down until the plan is
paid off.
- **[OrganonTweaks](https://code.beco.cc/beco/OrganonTweaks)** -- an umbrella of small
quality-of-life board tweaks: remove an empty column, always show the comment icon, emphasize due
dates, extra search keywords and shared board filters, and more.
- **[BulkMoveTasks](https://code.beco.cc/beco/BulkMoveTasks)** -- move every task from one board
column to another in a single action.
- **[ShrinkVertically](https://code.beco.cc/beco/ShrinkVertically)** -- shrink vertically-collapsed
board columns so the horizontal scrollbar stays within reach.
- **[TweakDrag](https://code.beco.cc/beco/TweakDrag)** -- board drag and touch niceties:
drag-to-scroll, a wider column gap, and smoother card dragging.