Skip to content

feat(h005): support BTD download orders with service params and date range - #52

Merged
uwemaurer merged 2 commits into
masterfrom
btd-download
Aug 25, 2026
Merged

feat(h005): support BTD download orders with service params and date range#52
uwemaurer merged 2 commits into
masterfrom
btd-download

Conversation

@uwemaurer

Copy link
Copy Markdown
Collaborator
  • feat(h005): support BTD download orders with service params and date range
  • fix(h005): validate download arguments before any bank contact, use LocalDate

Trofeomedia and others added 2 commits August 24, 2026 13:23
…range

Downloads sent the 3-letter order code as AdminOrderType with empty
StandardOrderParams, which EBICS 3.0 banks reject for customer data. This
mirrors the existing BTU upload path: optional EbicsDownloadParams produce
AdminOrderType=BTD with a BTDOrderParams/Service block, container type and an
optional DateRange.

Also fixes the date range that fetchFile(file, orderType, start, end) accepted
and dropped: without a service name the legacy order type is kept and the range
goes into StandardOrderParams. Behaviour without params is unchanged.

Dates are written as plain xs:date; passing a Calendar made XMLBeans append the
local offset (2026-08-10+02:00), which shifts the reported day for a bank in
another timezone.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
…ocalDate

Review round 1 on the BTD download support.

- Reject a partial or reversed date range in the EbicsDownloadParams constructor,
  the one place every caller passes through. A half range used to be dropped when
  the request was built, on the launcher's legacy path without even a warning; a
  reversed range is schema-valid and comes back as EBICS_NO_DOWNLOAD_DATA_AVAILABLE,
  indistinguishable from a genuinely empty period.
- Check every launcher argument before the first environment read, keystore access
  or bank call. It ran after loadUser/createUser and after --ini/--hia/--hpb, so an
  incomplete --btd order could still fire an INI request first, and INI is one-shot
  at most banks.
- Carry the report period as LocalDate instead of Date. A calendar day read out of
  an instant depends on the machine's timezone: a UTC-midnight Date becomes the
  previous day west of UTC. The Date-taking overloads are kept and now document
  that. Adds createDateRange(LocalDate, LocalDate).
- Upper-case the EBICS code list values (--service, --scope, --option, --container)
  so --container zip no longer aborts. Message names such as camt.053 stay as given.

Tests 31 -> 36. New guards were each seen failing first.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
@uwemaurer
uwemaurer merged commit 5563d62 into master Aug 25, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants