Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

intent: a roll-up balance against a capacity that is measured but not enforced (budget versus actual), or a computed report column

Aperta
#7,904 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
35/100
Tipo di issue
Funzionalità
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
java
Ambito
backend, databases

Direzione di ricerca

Read RollupIntentGenerator, especially the updateDerived to updateProperties path, and ReportIntentGenerator.addMeasure to see the current limits described in the issue. Trace how capacity, balance, and child-side guards are handled, then choose either the enforce: false roll-up behavior or computed report columns. Done means over-budget values are allowed, a null capacity produces a null balance, and the selected behavior is covered by a test.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Shape asked: a sum roll-up that keeps a remainder against a parent field and does NOT refuse. Two options; either one is enough:

rollups:
  - { name: projectActualHours, entity: ProjectTimesheet, via: Project, field: actualHours, op: sum, of: approvedHours,
      capacity: budgetHours, balance: remainingHours, enforce: false }   # measured, never guarded

or a report column computed from the row's own fields:

reports:
  - name: BudgetVsActual
    source: Project
    dimensions: [code, name, budgetHours, actualHours]
    columns: [{ name: remainingHours, expr: "budgetHours - actualHours" }, { name: consumedPercent, expr: "actualHours * 100 / budgetHours" }]

Why 14.88.0 cannot express it:

  • balance: requires capacity:, and capacity: always emits the child-side guard (#7448/#7542). A guard is right for money that must not be over-allocated. Booked hours over a project's budget are information, not an error. With the guard, the monthly schedule could not even create the next project-month of an over-budget project. guardAt: moves the guard, it does not remove it. A null capacity reads as 0 in the handler, so an unbudgeted project would refuse everything.
  • A stored remainingHours with calculatedOnUpdate: "BudgetHours - ActualHours" goes stale. The roll-up writes actualHours through updateDerived → updateProperties, which runs no calculated expression.
  • A report measure is aggregate(field) only (ReportIntentGenerator.addMeasure). 14.90.0 adds ledger, aging and statement shapes, but no computed column.

Case: BusinessIntents/base-projects (budget versus actual, GAP_ANALYSIS "app-projects"). Project.actualHours/actualRevenue are now roll-ups from base-timesheets (the foreign-parent direction of #6930, which works). remainingHours and the consumed % are what is left. The BudgetVsActual report shows budget and actual side by side until this lands.

enforce: false is the smaller change and also gives the remainder on the record page. When the capacity is null, the balance should be null, not -sum.

Lingua principale
Java
Stelle
278
Fork
97
Merge medio
17h 19m
PR unite (30g)
261

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di eclipse-dirigible/dirigible

Tutte le issue di eclipse-dirigible/dirigible

Issue simili

Altre issue su Java

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.