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

resolves: an as-of mode - the newest register row on or before the record's date (exchange rates, price changes), not only a covering validity period

Aperta
#7,916 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à
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
48/100
Tipo di issue
Funzionalità
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
java
Ambito
backend, databases

Direzione di ricerca

Start by reading the existing resolves: implementation from issue #6712 and trace how it evaluates between matches, orders candidates, and reports ambiguous or notFound. Add an as-of mode that selects the newest row with start on or before the record date; done means equal start dates remain ambiguous and dates with no earlier row return notFound. The payload names no source files or tests, so locate the implementation and its tests before making changes.

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

Descrizione

Problem

resolves: (#6712) fills a to-one, and with copy: scalars, from the register row whose validity period covers a date of the record (between: { start, end, value }). Two register rows covering the same date are reported as ambiguous, never picked from.

A very common register has no end date: a dated quote series. Exchange rates (one CurrencyRate row per currency per publication day), price changes and tax-rate changes all work this way. Each row is valid from its date until the next row replaces it. Declared with between: { start: date, value: date } and no end, every older row is open-ended too, so all of them cover the record's date and every lookup is ambiguous. Declared with start: date, end: date, a record dated on a day with no quote (a weekend, a holiday, a day the bank published nothing) is notFound. The rule the business applies is simple: take the newest row whose date is on or before the record's date. The construct cannot say it.

Ask

An as-of mode on between:

resolves:
  - name: invoiceRate
    event: { onCreate: SalesInvoice }
    from: CurrencyRate
    match: { Currency: Currency }
    between: { start: date, value: date, asOf: true }   # newest row with start <= value
    copy: { rate: rate }                                 # snapshot onto SalesInvoice.rate
    outcome: rateResolution

With asOf: true the lookup orders the candidates by start descending and takes the first row whose start <= value. ambiguous then means only two rows with the same start. notFound means no row on or before the date.

Where it is needed

BusinessIntents/base-journal#80, realised FX differences on settlement. The invoice and the payment each need the rate effective on their own date. The difference between the two, times the settled amount, is the 624 / 724 posting.

Lingua principale
Java
Stelle
278
Fork
97
Merge medio
16h 46m
PR unite (30g)
265

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.