@voyantjs/finance-ui 0.80.7 → 0.80.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,17 @@
1
+ import { type PaymentMethod, type PaymentStatus } from "@voyantjs/finance-react";
2
+ export interface EditingPaymentSnapshot {
3
+ id: string;
4
+ invoiceId: string;
5
+ amountCents: number;
6
+ currency: string;
7
+ baseCurrency: string | null;
8
+ baseAmountCents: number | null;
9
+ paymentMethod: PaymentMethod;
10
+ status: PaymentStatus;
11
+ paymentDate: string;
12
+ referenceNumber: string | null;
13
+ notes: string | null;
14
+ }
1
15
  export interface RecordBookingPaymentDialogProps {
2
16
  open: boolean;
3
17
  onOpenChange: (open: boolean) => void;
@@ -5,6 +19,14 @@ export interface RecordBookingPaymentDialogProps {
5
19
  /** Pre-fill currency when no invoices have loaded yet. */
6
20
  defaultCurrency?: string;
7
21
  onRecorded?: () => void;
22
+ /**
23
+ * When set, the dialog runs in edit mode: it prefills from the
24
+ * snapshot and PATCHes `/v1/finance/payments/:id` on submit instead
25
+ * of POSTing a new payment. The invoice selector is locked because
26
+ * reassigning a payment to a different invoice is out of scope for
27
+ * this dialog.
28
+ */
29
+ editingPayment?: EditingPaymentSnapshot | null;
8
30
  }
9
- export declare function RecordBookingPaymentDialog({ open, onOpenChange, bookingId, defaultCurrency, onRecorded, }: RecordBookingPaymentDialogProps): import("react/jsx-runtime").JSX.Element;
31
+ export declare function RecordBookingPaymentDialog({ open, onOpenChange, bookingId, defaultCurrency, onRecorded, editingPayment, }: RecordBookingPaymentDialogProps): import("react/jsx-runtime").JSX.Element;
10
32
  //# sourceMappingURL=record-booking-payment-dialog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"record-booking-payment-dialog.d.ts","sourceRoot":"","sources":["../../src/components/record-booking-payment-dialog.tsx"],"names":[],"mappings":"AAwCA,MAAM,WAAW,+BAA+B;IAC9C,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,SAAS,EAAE,MAAM,CAAA;IACjB,0DAA0D;IAC1D,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;CACxB;AA6DD,wBAAgB,0BAA0B,CAAC,EACzC,IAAI,EACJ,YAAY,EACZ,SAAS,EACT,eAAuB,EACvB,UAAU,GACX,EAAE,+BAA+B,2CA8YjC"}
1
+ {"version":3,"file":"record-booking-payment-dialog.d.ts","sourceRoot":"","sources":["../../src/components/record-booking-payment-dialog.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,aAAa,EAOnB,MAAM,yBAAyB,CAAA;AA8BhC,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,aAAa,EAAE,aAAa,CAAA;IAC5B,MAAM,EAAE,aAAa,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB;AAED,MAAM,WAAW,+BAA+B;IAC9C,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,SAAS,EAAE,MAAM,CAAA;IACjB,0DAA0D;IAC1D,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;IACvB;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAAA;CAC/C;AAkED,wBAAgB,0BAA0B,CAAC,EACzC,IAAI,EACJ,YAAY,EACZ,SAAS,EACT,eAAuB,EACvB,UAAU,EACV,cAAqB,GACtB,EAAE,+BAA+B,2CAmbjC"}
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { paymentMethodSchema, paymentStatusSchema, useInvoiceFxRate, useInvoicePaymentMutation, useInvoices, } from "@voyantjs/finance-react";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { paymentMethodSchema, paymentStatusSchema, useInvoiceFxRate, useInvoicePaymentMutation, useInvoices, usePaymentMutation, } from "@voyantjs/finance-react";
4
4
  import { formatMessage } from "@voyantjs/i18n";
5
5
  import { Button, Dialog, DialogBody, DialogContent, DialogFooter, DialogHeader, DialogTitle, Input, Label, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, Textarea, } from "@voyantjs/ui/components";
6
6
  import { CurrencyCombobox } from "@voyantjs/ui/components/currency-combobox";
@@ -19,9 +19,8 @@ function buildInitialFormState(currency) {
19
19
  invoiceId: "",
20
20
  amountCents: 0,
21
21
  currency,
22
- baseAmountCents: 0,
23
22
  fxRate: "",
24
- fxRateSource: null,
23
+ fxOverride: false,
25
24
  paymentMethod: "bank_transfer",
26
25
  status: "completed",
27
26
  paymentDate: todayIso(),
@@ -42,20 +41,26 @@ function parseFxRate(raw) {
42
41
  const value = Number.parseFloat(normalized);
43
42
  return Number.isFinite(value) && value > 0 ? value : null;
44
43
  }
45
- function deriveBaseAmountCents(amountCents, fxRateRaw) {
46
- const fxRate = parseFxRate(fxRateRaw);
44
+ function deriveBaseAmountCents(amountCents, fxRate) {
47
45
  if (!fxRate || amountCents <= 0)
48
46
  return null;
49
47
  return Math.round(amountCents / fxRate);
50
48
  }
51
49
  function formatFxRateInput(rate) {
52
- return String(rate);
50
+ return rate.toFixed(4);
53
51
  }
54
- export function RecordBookingPaymentDialog({ open, onOpenChange, bookingId, defaultCurrency = "EUR", onRecorded, }) {
52
+ function formatRateDisplay(rate) {
53
+ return rate.toFixed(4);
54
+ }
55
+ function formatCommissionPercent(bps) {
56
+ return (bps / 100).toFixed(2);
57
+ }
58
+ export function RecordBookingPaymentDialog({ open, onOpenChange, bookingId, defaultCurrency = "EUR", onRecorded, editingPayment = null, }) {
55
59
  const messages = useFinanceUiMessagesOrDefault();
56
60
  const dialog = messages.recordBookingPaymentDialog;
57
61
  const methodLabels = messages.common.paymentMethodLabels;
58
62
  const statusLabels = messages.common.supplierPaymentStatusLabels;
63
+ const isEditing = Boolean(editingPayment);
59
64
  const invoicesQuery = useInvoices({ bookingId, enabled: open });
60
65
  const invoices = invoicesQuery.data?.data ?? [];
61
66
  const outstandingInvoices = invoices.filter((inv) => inv.balanceDueCents > 0);
@@ -73,41 +78,63 @@ export function RecordBookingPaymentDialog({ open, onOpenChange, bookingId, defa
73
78
  return;
74
79
  }
75
80
  if (!initializedRef.current && !invoicesQuery.isLoading) {
76
- const target = selectableInvoices[0];
77
- setState({
78
- ...buildInitialFormState(defaultCurrency),
79
- invoiceId: target?.id ?? "",
80
- amountCents: target?.balanceDueCents ?? 0,
81
- currency: target?.currency ?? defaultCurrency,
82
- baseAmountCents: 0,
83
- fxRate: "",
84
- fxRateSource: null,
85
- });
81
+ if (editingPayment) {
82
+ setState({
83
+ ...buildInitialFormState(defaultCurrency),
84
+ invoiceId: editingPayment.invoiceId,
85
+ amountCents: editingPayment.amountCents,
86
+ currency: editingPayment.currency,
87
+ paymentMethod: editingPayment.paymentMethod,
88
+ status: editingPayment.status,
89
+ paymentDate: editingPayment.paymentDate,
90
+ referenceNumber: editingPayment.referenceNumber ?? "",
91
+ notes: editingPayment.notes ?? "",
92
+ });
93
+ }
94
+ else {
95
+ const target = selectableInvoices[0];
96
+ setState({
97
+ ...buildInitialFormState(defaultCurrency),
98
+ invoiceId: target?.id ?? "",
99
+ amountCents: target?.balanceDueCents ?? 0,
100
+ currency: target?.currency ?? defaultCurrency,
101
+ });
102
+ }
86
103
  initializedRef.current = true;
87
104
  }
88
- }, [open, invoicesQuery.isLoading, selectableInvoices, defaultCurrency]);
105
+ }, [open, invoicesQuery.isLoading, selectableInvoices, defaultCurrency, editingPayment]);
89
106
  const selectedInvoice = invoices.find((inv) => inv.id === state.invoiceId) ?? null;
90
107
  const invoiceCurrency = selectedInvoice?.currency ?? "";
91
108
  const normalizedInvoiceCurrency = normalizeCurrency(invoiceCurrency);
92
109
  const paymentCurrency = normalizeCurrency(state.currency);
93
110
  const isCrossCurrency = Boolean(normalizedInvoiceCurrency && paymentCurrency && normalizedInvoiceCurrency !== paymentCurrency);
94
111
  const requiresBaseAmount = isCrossCurrency && state.status === "completed";
95
- const mutation = useInvoicePaymentMutation(state.invoiceId);
112
+ const createMutation = useInvoicePaymentMutation(state.invoiceId);
113
+ const { update: updateMutation } = usePaymentMutation();
114
+ const isPending = isEditing ? updateMutation.isPending : createMutation.isPending;
96
115
  const fxRateQuery = useInvoiceFxRate({
97
116
  baseCurrency: normalizedInvoiceCurrency || undefined,
98
117
  quoteCurrency: paymentCurrency || undefined,
99
118
  date: state.paymentDate || undefined,
100
119
  enabled: open && isCrossCurrency,
101
120
  });
102
- const automaticFxRate = fxRateQuery.data?.data.rate;
121
+ const autoFxData = fxRateQuery.data?.data;
122
+ const autoEffectiveRate = typeof autoFxData?.effectiveRate === "number" && autoFxData.effectiveRate > 0
123
+ ? autoFxData.effectiveRate
124
+ : null;
125
+ const autoRawRate = typeof autoFxData?.rate === "number" && autoFxData.rate > 0 ? autoFxData.rate : null;
126
+ const autoCommissionBps = autoFxData?.fxCommissionBps ?? 0;
127
+ const manualRate = state.fxOverride ? parseFxRate(state.fxRate) : null;
128
+ const effectiveFxRate = state.fxOverride ? manualRate : autoEffectiveRate;
129
+ const baseAmountCents = isCrossCurrency
130
+ ? (deriveBaseAmountCents(state.amountCents, effectiveFxRate) ?? 0)
131
+ : 0;
132
+ const autoRateUnavailable = isCrossCurrency &&
133
+ !state.fxOverride &&
134
+ !fxRateQuery.isFetching &&
135
+ !autoEffectiveRate &&
136
+ fxRateQuery.isFetched;
103
137
  const set = (key, value) => setState((prev) => ({ ...prev, [key]: value }));
104
- const setAmountCents = (amountCents) => {
105
- setState((prev) => ({
106
- ...prev,
107
- amountCents,
108
- baseAmountCents: deriveBaseAmountCents(amountCents, prev.fxRate) ?? prev.baseAmountCents,
109
- }));
110
- };
111
138
  const setPaymentCurrency = (currency) => {
112
139
  const nextCurrency = normalizeCurrency(currency) || normalizedInvoiceCurrency || defaultCurrency;
113
140
  setState((prev) => {
@@ -122,43 +149,20 @@ export function RecordBookingPaymentDialog({ open, onOpenChange, bookingId, defa
122
149
  ? 0
123
150
  : prev.amountCents,
124
151
  currency: nextCurrency,
125
- baseAmountCents: nextIsCrossCurrency
126
- ? prev.baseAmountCents || selectedInvoice?.balanceDueCents || 0
127
- : 0,
128
- fxRate: nextIsCrossCurrency && sameCurrency ? prev.fxRate : "",
129
- fxRateSource: sameCurrency ? prev.fxRateSource : null,
152
+ fxOverride: sameCurrency ? prev.fxOverride : false,
153
+ fxRate: sameCurrency ? prev.fxRate : "",
130
154
  };
131
155
  });
132
156
  };
133
- const setFxRate = (fxRate) => {
157
+ const toggleOverride = (next) => {
134
158
  setState((prev) => ({
135
159
  ...prev,
136
- fxRate,
137
- fxRateSource: "manual",
138
- baseAmountCents: deriveBaseAmountCents(prev.amountCents, fxRate) ?? prev.baseAmountCents,
160
+ fxOverride: next,
161
+ fxRate: next && !prev.fxRate && autoEffectiveRate
162
+ ? formatFxRateInput(autoEffectiveRate)
163
+ : prev.fxRate,
139
164
  }));
140
165
  };
141
- React.useEffect(() => {
142
- if (!isCrossCurrency || typeof automaticFxRate !== "number" || automaticFxRate <= 0)
143
- return;
144
- const fxRate = formatFxRateInput(automaticFxRate);
145
- setState((prev) => {
146
- if (prev.fxRateSource === "manual")
147
- return prev;
148
- const baseAmountCents = deriveBaseAmountCents(prev.amountCents, fxRate);
149
- if (prev.fxRate === fxRate &&
150
- prev.fxRateSource === "auto" &&
151
- (baseAmountCents == null || prev.baseAmountCents === baseAmountCents)) {
152
- return prev;
153
- }
154
- return {
155
- ...prev,
156
- fxRate,
157
- fxRateSource: "auto",
158
- baseAmountCents: baseAmountCents ?? prev.baseAmountCents,
159
- };
160
- });
161
- }, [automaticFxRate, isCrossCurrency]);
162
166
  const handleSubmit = async (event) => {
163
167
  event.preventDefault();
164
168
  setSubmitError(null);
@@ -170,24 +174,30 @@ export function RecordBookingPaymentDialog({ open, onOpenChange, bookingId, defa
170
174
  setSubmitError(dialog.validation.amountMinimum);
171
175
  return;
172
176
  }
173
- if (requiresBaseAmount && state.baseAmountCents <= 0) {
177
+ if (requiresBaseAmount && baseAmountCents <= 0) {
174
178
  setSubmitError(dialog.validation.baseAmountRequired);
175
179
  return;
176
180
  }
181
+ const payload = {
182
+ amountCents: state.amountCents,
183
+ currency: isCrossCurrency
184
+ ? paymentCurrency || state.currency
185
+ : invoiceCurrency || state.currency,
186
+ baseCurrency: isCrossCurrency ? invoiceCurrency : null,
187
+ baseAmountCents: isCrossCurrency && baseAmountCents > 0 ? baseAmountCents : null,
188
+ paymentMethod: state.paymentMethod,
189
+ status: state.status,
190
+ paymentDate: state.paymentDate,
191
+ referenceNumber: state.referenceNumber.trim() === "" ? null : state.referenceNumber.trim(),
192
+ notes: state.notes.trim() === "" ? null : state.notes.trim(),
193
+ };
177
194
  try {
178
- await mutation.mutateAsync({
179
- amountCents: state.amountCents,
180
- currency: isCrossCurrency
181
- ? paymentCurrency || state.currency
182
- : invoiceCurrency || state.currency,
183
- baseCurrency: isCrossCurrency ? invoiceCurrency : null,
184
- baseAmountCents: isCrossCurrency && state.baseAmountCents > 0 ? state.baseAmountCents : null,
185
- paymentMethod: state.paymentMethod,
186
- status: state.status,
187
- paymentDate: state.paymentDate,
188
- referenceNumber: state.referenceNumber.trim() === "" ? null : state.referenceNumber.trim(),
189
- notes: state.notes.trim() === "" ? null : state.notes.trim(),
190
- });
195
+ if (isEditing && editingPayment) {
196
+ await updateMutation.mutateAsync({ id: editingPayment.id, input: payload });
197
+ }
198
+ else {
199
+ await createMutation.mutateAsync(payload);
200
+ }
191
201
  onOpenChange(false);
192
202
  onRecorded?.();
193
203
  }
@@ -196,7 +206,7 @@ export function RecordBookingPaymentDialog({ open, onOpenChange, bookingId, defa
196
206
  }
197
207
  };
198
208
  const descriptionParts = dialog.description.split("{generateLink}");
199
- return (_jsx(Dialog, { open: open, onOpenChange: onOpenChange, children: _jsxs(DialogContent, { size: "lg", children: [_jsx(DialogHeader, { children: _jsx(DialogTitle, { children: dialog.title }) }), _jsxs("form", { onSubmit: handleSubmit, children: [_jsxs(DialogBody, { className: "grid gap-4", children: [_jsxs("p", { className: "text-sm text-muted-foreground", children: [descriptionParts[0], _jsx("span", { className: "font-medium", children: dialog.generateLinkLabel }), descriptionParts[1]] }), _jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(Label, { htmlFor: "record-invoice", children: dialog.fields.invoice }), invoicesQuery.isLoading ? (_jsx("p", { className: "text-sm text-muted-foreground", children: dialog.loadingInvoices })) : selectableInvoices.length === 0 ? (_jsx("p", { className: "text-sm text-destructive", children: dialog.noInvoices })) : (_jsxs(Select, { value: state.invoiceId, onValueChange: (value) => {
209
+ return (_jsx(Dialog, { open: open, onOpenChange: onOpenChange, children: _jsxs(DialogContent, { size: "lg", children: [_jsx(DialogHeader, { children: _jsx(DialogTitle, { children: isEditing ? dialog.editTitle : dialog.title }) }), _jsxs("form", { onSubmit: handleSubmit, children: [_jsxs(DialogBody, { className: "grid gap-4", children: [isEditing ? null : (_jsxs("p", { className: "text-sm text-muted-foreground", children: [descriptionParts[0], _jsx("span", { className: "font-medium", children: dialog.generateLinkLabel }), descriptionParts[1]] })), _jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(Label, { htmlFor: "record-invoice", children: dialog.fields.invoice }), invoicesQuery.isLoading ? (_jsx("p", { className: "text-sm text-muted-foreground", children: dialog.loadingInvoices })) : selectableInvoices.length === 0 ? (_jsx("p", { className: "text-sm text-destructive", children: dialog.noInvoices })) : (_jsxs(Select, { value: state.invoiceId, disabled: isEditing, onValueChange: (value) => {
200
210
  const id = value ?? "";
201
211
  const next = invoices.find((inv) => inv.id === id);
202
212
  setState((prev) => ({
@@ -204,9 +214,8 @@ export function RecordBookingPaymentDialog({ open, onOpenChange, bookingId, defa
204
214
  invoiceId: id,
205
215
  amountCents: next?.balanceDueCents ?? prev.amountCents,
206
216
  currency: next?.currency ?? prev.currency,
207
- baseAmountCents: 0,
217
+ fxOverride: false,
208
218
  fxRate: "",
209
- fxRateSource: null,
210
219
  }));
211
220
  }, children: [_jsx(SelectTrigger, { id: "record-invoice", className: "w-full", children: _jsx(SelectValue, { placeholder: dialog.placeholders.invoice }) }), _jsx(SelectContent, { children: selectableInvoices.map((inv) => (_jsx(SelectItem, { value: inv.id, children: formatMessage(dialog.invoiceOption, {
212
221
  number: inv.invoiceNumber,
@@ -218,24 +227,35 @@ export function RecordBookingPaymentDialog({ open, onOpenChange, bookingId, defa
218
227
  paid: formatAmount(selectedInvoice.paidCents),
219
228
  due: formatAmount(selectedInvoice.balanceDueCents),
220
229
  currency: selectedInvoice.currency,
221
- }) })) : null] }), _jsxs("div", { className: "grid gap-4 sm:grid-cols-3", children: [_jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(Label, { htmlFor: "record-amount", children: dialog.fields.amountCents }), _jsx(CurrencyInput, { id: "record-amount", value: state.amountCents, onChange: (next) => setAmountCents(next ?? 0), currency: state.currency })] }), _jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(Label, { children: dialog.fields.currency }), _jsx(CurrencyCombobox, { value: state.currency || null, onChange: (next) => setPaymentCurrency(next ?? selectedInvoice?.currency ?? defaultCurrency), placeholder: dialog.placeholders.currency })] }), _jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(Label, { htmlFor: "record-date", children: dialog.fields.paymentDate }), _jsx(DatePicker, { value: state.paymentDate || null, onChange: (next) => set("paymentDate", next ?? ""), className: "w-full" })] })] }), isCrossCurrency ? (_jsxs("div", { className: "rounded-md border bg-muted/20 p-3", children: [_jsxs("div", { className: "mb-3 space-y-1", children: [_jsx("h3", { className: "text-sm font-medium", children: dialog.fx.title }), _jsx("p", { className: "text-xs text-muted-foreground", children: formatMessage(dialog.fx.help, {
222
- invoiceCurrency,
223
- paymentCurrency,
224
- }) })] }), _jsxs("div", { className: "grid gap-4 sm:grid-cols-3", children: [_jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(Label, { htmlFor: "record-base-amount", children: dialog.fields.baseAmountCents }), _jsx(CurrencyInput, { id: "record-base-amount", value: state.baseAmountCents, onChange: (next) => set("baseAmountCents", next ?? 0), currency: normalizedInvoiceCurrency || invoiceCurrency })] }), _jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(Label, { htmlFor: "record-fx-rate", children: dialog.fields.fxRate }), _jsx(Input, { id: "record-fx-rate", value: state.fxRate, onChange: (event) => setFxRate(event.target.value), inputMode: "decimal", placeholder: formatMessage(dialog.placeholders.fxRate, {
230
+ }) })) : null] }), _jsxs("div", { className: "grid gap-4 sm:grid-cols-3", children: [_jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(Label, { htmlFor: "record-amount", children: dialog.fields.amountCents }), _jsx(CurrencyInput, { id: "record-amount", value: state.amountCents, onChange: (next) => set("amountCents", next ?? 0), currency: state.currency })] }), _jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(Label, { children: dialog.fields.currency }), _jsx(CurrencyCombobox, { value: state.currency || null, onChange: (next) => setPaymentCurrency(next ?? selectedInvoice?.currency ?? defaultCurrency), placeholder: dialog.placeholders.currency })] }), _jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(Label, { htmlFor: "record-date", children: dialog.fields.paymentDate }), _jsx(DatePicker, { value: state.paymentDate || null, onChange: (next) => set("paymentDate", next ?? ""), className: "w-full" })] })] }), isCrossCurrency ? (_jsxs("div", { className: "rounded-md border bg-muted/20 p-3", children: [_jsxs("div", { className: "flex items-start justify-between gap-3", children: [_jsxs("div", { className: "space-y-1", children: [_jsx("h3", { className: "text-sm font-medium", children: dialog.fx.title }), fxRateQuery.isFetching ? (_jsx("p", { className: "text-xs text-muted-foreground", children: dialog.fx.loadingRate })) : autoRateUnavailable ? (_jsx("p", { className: "text-xs text-destructive", children: formatMessage(dialog.fx.rateUnavailable, {
225
231
  invoiceCurrency,
226
232
  paymentCurrency,
227
- }) })] }), _jsx("div", { className: "flex items-end", children: _jsx("p", { className: "pb-2 text-xs text-muted-foreground", children: fxRateQuery.isFetching
228
- ? dialog.fx.loadingRate
229
- : state.fxRateSource === "auto"
230
- ? formatMessage(dialog.fx.autoRateHint, {
231
- invoiceCurrency,
232
- paymentCurrency,
233
- })
234
- : formatMessage(dialog.fx.rateHint, {
235
- invoiceCurrency,
236
- paymentCurrency,
237
- }) }) })] })] })) : null, _jsxs("div", { className: "grid gap-4 sm:grid-cols-3", children: [_jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(Label, { children: dialog.fields.status }), _jsxs(Select, { value: state.status, onValueChange: (value) => set("status", (value ?? "completed")), children: [_jsx(SelectTrigger, { className: "w-full", children: _jsx(SelectValue, {}) }), _jsx(SelectContent, { children: PAYMENT_STATUSES.map((value) => (_jsx(SelectItem, { value: value, children: statusLabels[value] }, value))) })] })] }), _jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(Label, { children: dialog.fields.paymentMethod }), _jsxs(Select, { value: state.paymentMethod, onValueChange: (value) => set("paymentMethod", (value ?? "bank_transfer")), children: [_jsx(SelectTrigger, { className: "w-full", children: _jsx(SelectValue, {}) }), _jsx(SelectContent, { children: PAYMENT_METHODS.map((value) => (_jsx(SelectItem, { value: value, children: methodLabels[value] }, value))) })] })] }), _jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(Label, { htmlFor: "record-ref", children: dialog.fields.referenceNumber }), _jsx(Input, { id: "record-ref", value: state.referenceNumber, onChange: (event) => set("referenceNumber", event.target.value), placeholder: dialog.placeholders.referenceNumber })] })] }), _jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(Label, { htmlFor: "record-notes", children: dialog.fields.notes }), _jsx(Textarea, { id: "record-notes", value: state.notes, onChange: (event) => set("notes", event.target.value), rows: 3 })] }), submitError ? _jsx("p", { className: "text-sm text-destructive", children: submitError }) : null] }), _jsxs(DialogFooter, { children: [_jsx(Button, { type: "button", variant: "ghost", onClick: () => onOpenChange(false), children: messages.common.cancel }), _jsxs(Button, { type: "submit", disabled: mutation.isPending ||
233
+ }) })) : effectiveFxRate && baseAmountCents > 0 ? (_jsxs(_Fragment, { children: [_jsx("p", { className: "text-sm", children: formatMessage(dialog.fx.summary, {
234
+ amount: formatAmount(state.amountCents),
235
+ paymentCurrency,
236
+ baseAmount: formatAmount(baseAmountCents),
237
+ invoiceCurrency,
238
+ rate: formatRateDisplay(effectiveFxRate),
239
+ }) }), !state.fxOverride && autoCommissionBps > 0 ? (_jsx("p", { className: "text-xs text-muted-foreground", children: formatMessage(dialog.fx.commissionNote, {
240
+ rawRate: autoRawRate ? formatRateDisplay(autoRawRate) : "",
241
+ commission: formatCommissionPercent(autoCommissionBps),
242
+ invoiceCurrency,
243
+ paymentCurrency,
244
+ }) })) : !state.fxOverride && autoRawRate ? (_jsx("p", { className: "text-xs text-muted-foreground", children: dialog.fx.source })) : null] })) : (_jsx("p", { className: "text-xs text-muted-foreground", children: formatMessage(dialog.fx.help, {
245
+ invoiceCurrency,
246
+ paymentCurrency,
247
+ }) }))] }), _jsx(Button, { type: "button", variant: "ghost", size: "sm", onClick: () => toggleOverride(!state.fxOverride), children: state.fxOverride ? dialog.fx.useAuto : dialog.fx.override })] }), state.fxOverride || autoRateUnavailable ? (_jsxs("div", { className: "mt-3 flex flex-col gap-2 sm:max-w-xs", children: [_jsx(Label, { htmlFor: "record-fx-rate", children: formatMessage(dialog.fields.fxRate, {
248
+ invoiceCurrency,
249
+ paymentCurrency,
250
+ }) }), _jsx(Input, { id: "record-fx-rate", value: state.fxRate, onChange: (event) => setState((prev) => ({
251
+ ...prev,
252
+ fxOverride: true,
253
+ fxRate: event.target.value,
254
+ })), inputMode: "decimal", placeholder: formatMessage(dialog.placeholders.fxRate, {
255
+ invoiceCurrency,
256
+ paymentCurrency,
257
+ }) })] })) : null] })) : null, _jsxs("div", { className: "grid gap-4 sm:grid-cols-3", children: [_jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(Label, { children: dialog.fields.status }), _jsxs(Select, { value: state.status, onValueChange: (value) => set("status", (value ?? "completed")), children: [_jsx(SelectTrigger, { className: "w-full", children: _jsx(SelectValue, {}) }), _jsx(SelectContent, { children: PAYMENT_STATUSES.map((value) => (_jsx(SelectItem, { value: value, children: statusLabels[value] }, value))) })] })] }), _jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(Label, { children: dialog.fields.paymentMethod }), _jsxs(Select, { value: state.paymentMethod, onValueChange: (value) => set("paymentMethod", (value ?? "bank_transfer")), children: [_jsx(SelectTrigger, { className: "w-full", children: _jsx(SelectValue, {}) }), _jsx(SelectContent, { children: PAYMENT_METHODS.map((value) => (_jsx(SelectItem, { value: value, children: methodLabels[value] }, value))) })] })] }), _jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(Label, { htmlFor: "record-ref", children: dialog.fields.referenceNumber }), _jsx(Input, { id: "record-ref", value: state.referenceNumber, onChange: (event) => set("referenceNumber", event.target.value), placeholder: dialog.placeholders.referenceNumber })] })] }), _jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(Label, { htmlFor: "record-notes", children: dialog.fields.notes }), _jsx(Textarea, { id: "record-notes", value: state.notes, onChange: (event) => set("notes", event.target.value), rows: 3 })] }), submitError ? _jsx("p", { className: "text-sm text-destructive", children: submitError }) : null] }), _jsxs(DialogFooter, { children: [_jsx(Button, { type: "button", variant: "ghost", onClick: () => onOpenChange(false), children: messages.common.cancel }), _jsxs(Button, { type: "submit", disabled: isPending ||
238
258
  !state.invoiceId ||
239
259
  state.amountCents <= 0 ||
240
- (requiresBaseAmount && state.baseAmountCents <= 0), children: [mutation.isPending ? _jsx(Loader2, { className: "mr-2 h-4 w-4 animate-spin" }) : null, dialog.actions.record] })] })] })] }) }));
260
+ (requiresBaseAmount && baseAmountCents <= 0), children: [isPending ? _jsx(Loader2, { className: "mr-2 h-4 w-4 animate-spin" }) : null, isEditing ? dialog.actions.save : dialog.actions.record] })] })] })] }) }));
241
261
  }
package/dist/i18n/en.d.ts CHANGED
@@ -504,13 +504,13 @@ export declare const financeUiEn: {
504
504
  };
505
505
  recordBookingPaymentDialog: {
506
506
  title: string;
507
+ editTitle: string;
507
508
  description: string;
508
509
  generateLinkLabel: string;
509
510
  fields: {
510
511
  invoice: string;
511
512
  amountCents: string;
512
513
  currency: string;
513
- baseAmountCents: string;
514
514
  fxRate: string;
515
515
  paymentDate: string;
516
516
  paymentMethod: string;
@@ -527,9 +527,13 @@ export declare const financeUiEn: {
527
527
  fx: {
528
528
  title: string;
529
529
  help: string;
530
- rateHint: string;
531
530
  loadingRate: string;
532
- autoRateHint: string;
531
+ summary: string;
532
+ commissionNote: string;
533
+ source: string;
534
+ rateUnavailable: string;
535
+ override: string;
536
+ useAuto: string;
533
537
  };
534
538
  invoiceOption: string;
535
539
  invoiceMeta: string;
@@ -537,6 +541,7 @@ export declare const financeUiEn: {
537
541
  noInvoices: string;
538
542
  actions: {
539
543
  record: string;
544
+ save: string;
540
545
  };
541
546
  validation: {
542
547
  invoiceRequired: string;
@@ -1 +1 @@
1
- {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../src/i18n/en.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkjBK,CAAA"}
1
+ {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../src/i18n/en.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAujBK,CAAA"}
package/dist/i18n/en.js CHANGED
@@ -504,14 +504,14 @@ export const financeUiEn = {
504
504
  },
505
505
  recordBookingPaymentDialog: {
506
506
  title: "Record payment",
507
+ editTitle: "Edit payment",
507
508
  description: "Log a payment you've already received (bank transfer, cash, cheque, manual card charge, etc.). To send the customer a card or bank-transfer link, use {generateLink} instead.",
508
509
  generateLinkLabel: "Generate payment link",
509
510
  fields: {
510
511
  invoice: "Invoice",
511
512
  amountCents: "Amount",
512
513
  currency: "Payment currency",
513
- baseAmountCents: "Invoice-currency amount",
514
- fxRate: "FX rate",
514
+ fxRate: "Rate (1 {invoiceCurrency} = ? {paymentCurrency})",
515
515
  paymentDate: "Payment date",
516
516
  paymentMethod: "Method",
517
517
  status: "Status",
@@ -526,10 +526,14 @@ export const financeUiEn = {
526
526
  },
527
527
  fx: {
528
528
  title: "Cross-currency settlement",
529
- help: "Record the received amount in {paymentCurrency} and the value applied to the invoice in {invoiceCurrency}.",
530
- rateHint: "Use the rate as {paymentCurrency} per 1 {invoiceCurrency}; entering it updates the invoice-currency amount.",
529
+ help: "Enter the amount you received; the invoice-currency value is computed automatically.",
531
530
  loadingRate: "Loading FX rate...",
532
- autoRateHint: "Using the current {paymentCurrency} per 1 {invoiceCurrency} rate; edit it if needed.",
531
+ summary: "{amount} {paymentCurrency} {baseAmount} {invoiceCurrency} · 1 {invoiceCurrency} = {rate} {paymentCurrency}",
532
+ commissionNote: "BNR rate {rawRate} + {commission}% FX commission",
533
+ source: "BNR rate",
534
+ rateUnavailable: "Rate for {invoiceCurrency}/{paymentCurrency} not available — enter it manually.",
535
+ override: "Override rate",
536
+ useAuto: "Use automatic rate",
533
537
  },
534
538
  invoiceOption: "{number} — {status} — {balance} {currency} due",
535
539
  invoiceMeta: "Total {total} {currency} • paid {paid} {currency} • due {due} {currency}",
@@ -537,6 +541,7 @@ export const financeUiEn = {
537
541
  noInvoices: "No invoices on this booking. Issue an invoice before recording a payment.",
538
542
  actions: {
539
543
  record: "Record payment",
544
+ save: "Save changes",
540
545
  },
541
546
  validation: {
542
547
  invoiceRequired: "Select an invoice to record this payment against.",
@@ -361,6 +361,8 @@ export type FinanceUiMessages = {
361
361
  };
362
362
  recordBookingPaymentDialog: {
363
363
  title: string;
364
+ /** Title used when the dialog runs in edit mode. */
365
+ editTitle: string;
364
366
  /** Body intro. Includes the `{generateLink}` placeholder bolded by the dialog. */
365
367
  description: string;
366
368
  /** Inline emphasized label used inside `description`. */
@@ -369,7 +371,7 @@ export type FinanceUiMessages = {
369
371
  invoice: string;
370
372
  amountCents: string;
371
373
  currency: string;
372
- baseAmountCents: string;
374
+ /** Override-rate input label. Placeholders: `{invoiceCurrency} {paymentCurrency}`. */
373
375
  fxRate: string;
374
376
  paymentDate: string;
375
377
  paymentMethod: string;
@@ -386,13 +388,21 @@ export type FinanceUiMessages = {
386
388
  };
387
389
  fx: {
388
390
  title: string;
389
- /** Help text. Placeholders: `{invoiceCurrency} {paymentCurrency}`. */
391
+ /** Pre-conversion help text. Placeholders: `{invoiceCurrency} {paymentCurrency}`. */
390
392
  help: string;
391
- /** Inline hint. Placeholders: `{invoiceCurrency} {paymentCurrency}`. */
392
- rateHint: string;
393
393
  loadingRate: string;
394
- /** Auto-rate hint. Placeholders: `{invoiceCurrency} {paymentCurrency}`. */
395
- autoRateHint: string;
394
+ /** Conversion summary. Placeholders: `{amount} {paymentCurrency} {baseAmount} {invoiceCurrency} {rate}`. */
395
+ summary: string;
396
+ /** Commission note. Placeholders: `{rawRate} {commission} {invoiceCurrency} {paymentCurrency}`. */
397
+ commissionNote: string;
398
+ /** Source attribution when commission is zero. */
399
+ source: string;
400
+ /** Shown when the auto rate can't be fetched. Placeholders: `{invoiceCurrency} {paymentCurrency}`. */
401
+ rateUnavailable: string;
402
+ /** Action button to switch to manual rate. */
403
+ override: string;
404
+ /** Action button to switch back to auto rate. */
405
+ useAuto: string;
396
406
  };
397
407
  /** Per-row option label. Placeholders: `{number} {status} {balance} {currency}`. */
398
408
  invoiceOption: string;
@@ -402,6 +412,7 @@ export type FinanceUiMessages = {
402
412
  noInvoices: string;
403
413
  actions: {
404
414
  record: string;
415
+ save: string;
405
416
  };
406
417
  validation: {
407
418
  invoiceRequired: string;
@@ -1 +1 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/i18n/messages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/i18n/messages.ts"],"names":[],"mappings":"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"}
@@ -508,13 +508,13 @@ export declare const financeUiMessageDefinitions: {
508
508
  };
509
509
  recordBookingPaymentDialog: {
510
510
  title: string;
511
+ editTitle: string;
511
512
  description: string;
512
513
  generateLinkLabel: string;
513
514
  fields: {
514
515
  invoice: string;
515
516
  amountCents: string;
516
517
  currency: string;
517
- baseAmountCents: string;
518
518
  fxRate: string;
519
519
  paymentDate: string;
520
520
  paymentMethod: string;
@@ -531,9 +531,13 @@ export declare const financeUiMessageDefinitions: {
531
531
  fx: {
532
532
  title: string;
533
533
  help: string;
534
- rateHint: string;
535
534
  loadingRate: string;
536
- autoRateHint: string;
535
+ summary: string;
536
+ commissionNote: string;
537
+ source: string;
538
+ rateUnavailable: string;
539
+ override: string;
540
+ useAuto: string;
537
541
  };
538
542
  invoiceOption: string;
539
543
  invoiceMeta: string;
@@ -541,6 +545,7 @@ export declare const financeUiMessageDefinitions: {
541
545
  noInvoices: string;
542
546
  actions: {
543
547
  record: string;
548
+ save: string;
544
549
  };
545
550
  validation: {
546
551
  invoiceRequired: string;
@@ -1056,13 +1061,13 @@ export declare const financeUiMessageDefinitions: {
1056
1061
  };
1057
1062
  recordBookingPaymentDialog: {
1058
1063
  title: string;
1064
+ editTitle: string;
1059
1065
  description: string;
1060
1066
  generateLinkLabel: string;
1061
1067
  fields: {
1062
1068
  invoice: string;
1063
1069
  amountCents: string;
1064
1070
  currency: string;
1065
- baseAmountCents: string;
1066
1071
  fxRate: string;
1067
1072
  paymentDate: string;
1068
1073
  paymentMethod: string;
@@ -1079,9 +1084,13 @@ export declare const financeUiMessageDefinitions: {
1079
1084
  fx: {
1080
1085
  title: string;
1081
1086
  help: string;
1082
- rateHint: string;
1083
1087
  loadingRate: string;
1084
- autoRateHint: string;
1088
+ summary: string;
1089
+ commissionNote: string;
1090
+ source: string;
1091
+ rateUnavailable: string;
1092
+ override: string;
1093
+ useAuto: string;
1085
1094
  };
1086
1095
  invoiceOption: string;
1087
1096
  invoiceMeta: string;
@@ -1089,6 +1098,7 @@ export declare const financeUiMessageDefinitions: {
1089
1098
  noInvoices: string;
1090
1099
  actions: {
1091
1100
  record: string;
1101
+ save: string;
1092
1102
  };
1093
1103
  validation: {
1094
1104
  invoiceRequired: string;
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/i18n/provider.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/i18n/provider.tsx"],"names":[],"mappings":"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"}
package/dist/i18n/ro.d.ts CHANGED
@@ -504,13 +504,13 @@ export declare const financeUiRo: {
504
504
  };
505
505
  recordBookingPaymentDialog: {
506
506
  title: string;
507
+ editTitle: string;
507
508
  description: string;
508
509
  generateLinkLabel: string;
509
510
  fields: {
510
511
  invoice: string;
511
512
  amountCents: string;
512
513
  currency: string;
513
- baseAmountCents: string;
514
514
  fxRate: string;
515
515
  paymentDate: string;
516
516
  paymentMethod: string;
@@ -527,9 +527,13 @@ export declare const financeUiRo: {
527
527
  fx: {
528
528
  title: string;
529
529
  help: string;
530
- rateHint: string;
531
530
  loadingRate: string;
532
- autoRateHint: string;
531
+ summary: string;
532
+ commissionNote: string;
533
+ source: string;
534
+ rateUnavailable: string;
535
+ override: string;
536
+ useAuto: string;
533
537
  };
534
538
  invoiceOption: string;
535
539
  invoiceMeta: string;
@@ -537,6 +541,7 @@ export declare const financeUiRo: {
537
541
  noInvoices: string;
538
542
  actions: {
539
543
  record: string;
544
+ save: string;
540
545
  };
541
546
  validation: {
542
547
  invoiceRequired: string;
@@ -1 +1 @@
1
- {"version":3,"file":"ro.d.ts","sourceRoot":"","sources":["../../src/i18n/ro.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwjBK,CAAA"}
1
+ {"version":3,"file":"ro.d.ts","sourceRoot":"","sources":["../../src/i18n/ro.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6jBK,CAAA"}
package/dist/i18n/ro.js CHANGED
@@ -504,14 +504,14 @@ export const financeUiRo = {
504
504
  },
505
505
  recordBookingPaymentDialog: {
506
506
  title: "Inregistreaza plata",
507
+ editTitle: "Editeaza plata",
507
508
  description: "Inregistreaza o plata deja incasata (transfer bancar, numerar, cec, plata cu cardul efectuata manual etc.). Pentru a trimite clientului un link de plata cu cardul sau prin transfer bancar, foloseste {generateLink}.",
508
509
  generateLinkLabel: "Genereaza link de plata",
509
510
  fields: {
510
511
  invoice: "Factura",
511
512
  amountCents: "Suma",
512
513
  currency: "Moneda platii",
513
- baseAmountCents: "Suma in moneda facturii",
514
- fxRate: "Curs valutar",
514
+ fxRate: "Curs (1 {invoiceCurrency} = ? {paymentCurrency})",
515
515
  paymentDate: "Data platii",
516
516
  paymentMethod: "Metoda",
517
517
  status: "Status",
@@ -526,10 +526,14 @@ export const financeUiRo = {
526
526
  },
527
527
  fx: {
528
528
  title: "Decontare in alta moneda",
529
- help: "Inregistreaza suma incasata in {paymentCurrency} si valoarea aplicata pe factura in {invoiceCurrency}.",
530
- rateHint: "Foloseste cursul ca {paymentCurrency} pentru 1 {invoiceCurrency}; completarea lui actualizeaza suma in moneda facturii.",
529
+ help: "Introdu suma incasata; valoarea pe factura se calculeaza automat.",
531
530
  loadingRate: "Se incarca cursul valutar...",
532
- autoRateHint: "Foloseste cursul curent {paymentCurrency} pentru 1 {invoiceCurrency}; il poti modifica daca este nevoie.",
531
+ summary: "{amount} {paymentCurrency} {baseAmount} {invoiceCurrency} · 1 {invoiceCurrency} = {rate} {paymentCurrency}",
532
+ commissionNote: "Curs BNR {rawRate} + {commission}% comision valutar",
533
+ source: "Curs BNR",
534
+ rateUnavailable: "Cursul {invoiceCurrency}/{paymentCurrency} indisponibil — introdu-l manual.",
535
+ override: "Suprascrie cursul",
536
+ useAuto: "Foloseste cursul automat",
533
537
  },
534
538
  invoiceOption: "{number} — {status} — {balance} {currency} de incasat",
535
539
  invoiceMeta: "Total {total} {currency} • platit {paid} {currency} • de incasat {due} {currency}",
@@ -537,6 +541,7 @@ export const financeUiRo = {
537
541
  noInvoices: "Nu exista facturi pe aceasta rezervare. Emite o factura inainte de a inregistra o plata.",
538
542
  actions: {
539
543
  record: "Inregistreaza plata",
544
+ save: "Salveaza modificarile",
540
545
  },
541
546
  validation: {
542
547
  invoiceRequired: "Selecteaza o factura pentru aceasta plata.",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@voyantjs/finance-ui",
3
- "version": "0.80.7",
3
+ "version": "0.80.9",
4
4
  "license": "Apache-2.0",
5
5
  "repository": {
6
6
  "type": "git",
@@ -45,14 +45,14 @@
45
45
  "react-dom": "^19.0.0",
46
46
  "react-hook-form": "^7.60.0",
47
47
  "zod": "^4.3.6",
48
- "@voyantjs/bookings-ui": "0.80.7",
49
- "@voyantjs/finance": "0.80.7",
50
- "@voyantjs/finance-react": "0.80.7",
51
- "@voyantjs/suppliers-ui": "0.80.7",
52
- "@voyantjs/ui": "0.80.7"
48
+ "@voyantjs/bookings-ui": "0.80.9",
49
+ "@voyantjs/finance": "0.80.9",
50
+ "@voyantjs/finance-react": "0.80.9",
51
+ "@voyantjs/suppliers-ui": "0.80.9",
52
+ "@voyantjs/ui": "0.80.9"
53
53
  },
54
54
  "dependencies": {
55
- "@voyantjs/i18n": "0.80.7"
55
+ "@voyantjs/i18n": "0.80.9"
56
56
  },
57
57
  "devDependencies": {
58
58
  "@tanstack/react-query": "^5.100.11",
@@ -65,12 +65,12 @@
65
65
  "typescript": "^6.0.2",
66
66
  "vitest": "^4.1.2",
67
67
  "zod": "^4.3.6",
68
- "@voyantjs/bookings-ui": "0.80.7",
69
- "@voyantjs/finance": "0.80.7",
70
- "@voyantjs/finance-react": "0.80.7",
71
- "@voyantjs/i18n": "0.80.7",
72
- "@voyantjs/suppliers-ui": "0.80.7",
73
- "@voyantjs/ui": "0.80.7",
68
+ "@voyantjs/bookings-ui": "0.80.9",
69
+ "@voyantjs/finance": "0.80.9",
70
+ "@voyantjs/finance-react": "0.80.9",
71
+ "@voyantjs/i18n": "0.80.9",
72
+ "@voyantjs/suppliers-ui": "0.80.9",
73
+ "@voyantjs/ui": "0.80.9",
74
74
  "@voyantjs/voyant-typescript-config": "0.1.0"
75
75
  },
76
76
  "files": [