taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit 595679436cbd22cac085195d6ab0cb8758ac435b
parent 48137ab5f7c76cedfb3e525252979f954b77d075
Author: Sebastian <sebasjm@taler-systems.com>
Date:   Tue, 17 Feb 2026 11:45:08 -0300

fix: add shift and fix update of sched report

Diffstat:
Mpackages/merchant-backoffice-ui/src/paths/instance/reports/create/CreatePage.tsx | 20++++++++++++++------
Mpackages/merchant-backoffice-ui/src/paths/instance/reports/update/UpdatePage.tsx | 13++++++++++++-
Mpackages/taler-util/src/http-client/merchant.ts | 4++--
3 files changed, 28 insertions(+), 9 deletions(-)

diff --git a/packages/merchant-backoffice-ui/src/paths/instance/reports/create/CreatePage.tsx b/packages/merchant-backoffice-ui/src/paths/instance/reports/create/CreatePage.tsx @@ -79,11 +79,17 @@ export function CreatePage({ onCreated, onBack }: Props): VNode { const errors = undefinedIfEmpty<FormErrors<Entity>>({ description: !state.description ? i18n.str`Required` : undefined, - data_source: !state.data_source ? i18n.str`Required` : undefined, + data_source: !state.data_source + ? i18n.str`Required` + : !state.data_source.startsWith("/") + ? i18n.str`It should start with /` + : undefined, mime_type: !state.mime_type ? i18n.str`Required` : undefined, program_section: !state.program_section ? i18n.str`Required` : undefined, report_frequency: !state.report_frequency ? i18n.str`Required` : undefined, - report_frequency_shift: !state.mime_type ? i18n.str`Required` : undefined, + report_frequency_shift: !state.report_frequency_shift + ? i18n.str`Required` + : undefined, target_address: !state.target_address ? i18n.str`Required` : undefined, }); @@ -93,7 +99,8 @@ export function CreatePage({ onCreated, onBack }: Props): VNode { const data = !!errors ? undefined : (state as TalerMerchantApi.ReportAddRequest); - const create = safeFunctionHandler(i18n.str`create scheduled report`, + const create = safeFunctionHandler( + i18n.str`create scheduled report`, lib.instance.createScheduledReport.bind(lib.instance), !session.token || !data ? undefined : [session.token, data], ); @@ -179,10 +186,11 @@ export function CreatePage({ onCreated, onBack }: Props): VNode { useProtocolDuration /> - {/* <Input<Entity> + <InputDuration<Entity> name="report_frequency_shift" - label={i18n.str`Description`} - /> */} + label={i18n.str`Report frequency shift`} + useProtocolDuration + /> <div class="buttons is-right mt-5"> {onBack && ( diff --git a/packages/merchant-backoffice-ui/src/paths/instance/reports/update/UpdatePage.tsx b/packages/merchant-backoffice-ui/src/paths/instance/reports/update/UpdatePage.tsx @@ -111,7 +111,11 @@ export function UpdatePage({ report, onUpdated, onBack }: Props): VNode { // }, []); const errors = undefinedIfEmpty<FormErrors<Entity>>({ description: !state.description ? i18n.str`Required` : undefined, - data_source: !state.data_source ? i18n.str`Required` : undefined, + data_source: !state.data_source + ? i18n.str`Required` + : !state.data_source.startsWith("/") + ? i18n.str`It should start with /` + : undefined, mime_type: !state.mime_type ? i18n.str`Required` : undefined, program_section: !state.program_section ? i18n.str`Required` : undefined, report_frequency: !state.report_frequency ? i18n.str`Required` : undefined, @@ -229,6 +233,13 @@ export function UpdatePage({ report, onUpdated, onBack }: Props): VNode { label={i18n.str`Report frequency`} useProtocolDuration /> + + <InputDuration<Entity> + name="report_frequency_shift" + label={i18n.str`Report frequency shift`} + useProtocolDuration + /> + <div class="buttons is-right mt-5"> {onBack && ( <button class="button" onClick={onBack}> diff --git a/packages/taler-util/src/http-client/merchant.ts b/packages/taler-util/src/http-client/merchant.ts @@ -2951,11 +2951,11 @@ export class TalerMerchantInstanceHttpClient { }); switch (resp.status) { - case HttpStatusCode.Ok: + case HttpStatusCode.NoContent: this.cacheEvictor.notifySuccess( TalerMerchantInstanceCacheEviction.UPDATE_REPORTS, ); - return opSuccessFromHttp(resp, codecForReportAddedResponse()); + return opEmptySuccess(); case HttpStatusCode.Unauthorized: return opKnownHttpFailure(resp.status, resp); case HttpStatusCode.NotFound: