taler-typescript-core

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

commit 17020c9cb78963269de13b2e715eb23bfaf78615
parent b60e7d0c9dc418628635638becefabf557a0159c
Author: Sebastian <sebasjm@taler-systems.com>
Date:   Mon,  8 Dec 2025 13:16:26 -0300

fix #10637

Diffstat:
Mpackages/merchant-backoffice-ui/src/paths/instance/orders/list/ListPage.tsx | 1+
Mpackages/merchant-backoffice-ui/src/paths/instance/orders/list/Table.tsx | 59+++++++++++++++++++++++++++++++++++++++--------------------
Mpackages/merchant-backoffice-ui/src/paths/instance/orders/list/index.tsx | 5-----
3 files changed, 40 insertions(+), 25 deletions(-)

diff --git a/packages/merchant-backoffice-ui/src/paths/instance/orders/list/ListPage.tsx b/packages/merchant-backoffice-ui/src/paths/instance/orders/list/ListPage.tsx @@ -212,6 +212,7 @@ export function ListPage({ <CardTable orders={orders} onCreate={onCreate} + showRefund={!!isRefundedActive} onSelect={onSelectOrder} onRefund={onRefundOrder} onLoadMoreAfter={onLoadMoreAfter} diff --git a/packages/merchant-backoffice-ui/src/paths/instance/orders/list/Table.tsx b/packages/merchant-backoffice-ui/src/paths/instance/orders/list/Table.tsx @@ -45,9 +45,7 @@ import { Input } from "../../../../components/form/Input.js"; import { InputCurrency } from "../../../../components/form/InputCurrency.js"; import { InputGroup } from "../../../../components/form/InputGroup.js"; import { InputSelector } from "../../../../components/form/InputSelector.js"; -import { - HtmlPersonaFlag -} from "../../../../components/menu/SideBar.js"; +import { HtmlPersonaFlag } from "../../../../components/menu/SideBar.js"; import { ConfirmModal } from "../../../../components/modal/index.js"; import { useSessionContext } from "../../../../context/session.js"; import { WithId } from "../../../../declaration.js"; @@ -59,7 +57,6 @@ import { import { mergeRefunds } from "../../../../utils/amount.js"; import { getOrderAmountAndWirefee } from "../details/DetailPage.js"; - const TALER_SCREEN_ID = 48; type Entity = TalerMerchantApi.OrderHistoryEntry & WithId; @@ -70,10 +67,12 @@ interface Props { onSelect: (order: Entity) => void; onLoadMoreBefore?: () => void; onLoadMoreAfter?: () => void; + showRefund?: boolean; } export function CardTable({ orders, + showRefund = false, onCreate, onRefund, onSelect, @@ -124,6 +123,7 @@ export function CardTable({ instances={orders} onSelect={onSelect} onRefund={onRefund} + showRefund={showRefund} rowSelection={rowSelection} rowSelectionHandler={rowSelectionHandler} onLoadMoreAfter={onLoadMoreAfter} @@ -146,10 +146,12 @@ interface TableProps { rowSelectionHandler: StateUpdater<string[]>; onLoadMoreBefore?: () => void; onLoadMoreAfter?: () => void; + showRefund: boolean; } function Table({ instances, + showRefund, onSelect, onRefund, onLoadMoreAfter, @@ -194,6 +196,12 @@ function Table({ <th style={{ minWidth: 100 }}> <i18n.Translate>Amount</i18n.Translate> </th> + {showRefund ? ( + <th style={{ minWidth: 100 }}> + <i18n.Translate>Refunded</i18n.Translate> + </th> + ) : undefined} + <th style={{ minWidth: 400 }}> <i18n.Translate>Summary</i18n.Translate> </th> @@ -211,9 +219,9 @@ function Table({ {i.timestamp.t_s === "never" ? i18n.str`Never` : format( - new Date(i.timestamp.t_s * 1000), - datetimeFormatForSettings(settings), - )} + new Date(i.timestamp.t_s * 1000), + datetimeFormatForSettings(settings), + )} </td> <td onClick={(): void => onSelect(i)} @@ -221,6 +229,14 @@ function Table({ > {i.amount} </td> + {showRefund ? ( + <td + onClick={(): void => onSelect(i)} + style={{ cursor: "pointer" }} + > + {i.refund_amount} + </td> + ) : undefined} <td onClick={(): void => onSelect(i)} style={{ cursor: "pointer" }} @@ -314,8 +330,11 @@ export function RefundModal({ let amount: AmountString | undefined; if (order.order_status === "paid") { - const orderam = getOrderAmountAndWirefee(order) - amount = typeof orderam === "string" ? undefined : Amounts.stringify(orderam.amount) + const orderam = getOrderAmountAndWirefee(order); + amount = + typeof orderam === "string" + ? undefined + : Amounts.stringify(orderam.amount); } const refunds = ( @@ -361,14 +380,14 @@ export function RefundModal({ const req: TalerMerchantApi.RefundRequest | undefined = !form.refund ? undefined : { - refund: Amounts.stringify( - Amounts.add(Amounts.parse(form.refund)!, totalRefunded).amount, - ), - reason: - form.description === undefined - ? form.mainReason || "" - : `${form.mainReason}: ${form.description}`, - }; + refund: Amounts.stringify( + Amounts.add(Amounts.parse(form.refund)!, totalRefunded).amount, + ), + reason: + form.description === undefined + ? form.mainReason || "" + : `${form.mainReason}: ${form.description}`, + }; const refund = safeFunctionHandler( (token: AccessToken, id: string, request: TalerMerchantApi.RefundRequest) => @@ -431,9 +450,9 @@ export function RefundModal({ {r.timestamp.t_s === "never" ? i18n.str`Never` : format( - new Date(r.timestamp.t_s * 1000), - datetimeFormatForSettings(settings), - )} + new Date(r.timestamp.t_s * 1000), + datetimeFormatForSettings(settings), + )} </td> <td>{r.amount}</td> <td>{r.reason}</td> diff --git a/packages/merchant-backoffice-ui/src/paths/instance/orders/list/index.tsx b/packages/merchant-backoffice-ui/src/paths/instance/orders/list/index.tsx @@ -213,8 +213,3 @@ function RefundModalForTable({ id, onConfirmed, onCancel }: RefundProps): VNode /> ); } - -async function copyToClipboard(text: string): Promise<void> { - console.log("copied", text); - return navigator.clipboard.writeText(text); -}