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:
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: