@fayz-ai/plugin-financial 0.16.1 → 0.17.0

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 +1 @@
1
- {"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../src/data/mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AACpD,OAAO,KAAK,EACV,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,WAAW,EACvC,aAAa,EAQ1B,aAAa,EACd,MAAM,UAAU,CAAA;AAoIjB;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAA;IAC5B,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;IACpB,YAAY,CAAC,EAAE,WAAW,EAAE,CAAA;IAC5B,SAAS,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAC/B,cAAc,CAAC,EAAE,aAAa,EAAE,CAAA;IAChC,cAAc,CAAC,EAAE,aAAa,EAAE,CAAA;CACjC;AAED,MAAM,WAAW,4BAA4B;IAC3C,kBAAkB,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACtE,0FAA0F;IAC1F,IAAI,CAAC,EAAE,iBAAiB,CAAA;CACzB;AAED,wBAAgB,2BAA2B,CAAC,OAAO,CAAC,EAAE,4BAA4B,GAAG,qBAAqB,CAszBzG"}
1
+ {"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../src/data/mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AACpD,OAAO,KAAK,EACV,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,WAAW,EACvC,aAAa,EAQ1B,aAAa,EACd,MAAM,UAAU,CAAA;AAoIjB;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAA;IAC5B,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;IACpB,YAAY,CAAC,EAAE,WAAW,EAAE,CAAA;IAC5B,SAAS,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAC/B,cAAc,CAAC,EAAE,aAAa,EAAE,CAAA;IAChC,cAAc,CAAC,EAAE,aAAa,EAAE,CAAA;CACjC;AAED,MAAM,WAAW,4BAA4B;IAC3C,kBAAkB,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACtE,0FAA0F;IAC1F,IAAI,CAAC,EAAE,iBAAiB,CAAA;CACzB;AAED,wBAAgB,2BAA2B,CAAC,OAAO,CAAC,EAAE,4BAA4B,GAAG,qBAAqB,CA0zBzG"}
@@ -1 +1 @@
1
- {"version":3,"file":"supabase.d.ts","sourceRoot":"","sources":["../../src/data/supabase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AA0VpD,wBAAgB,+BAA+B,IAAI,qBAAqB,CAi6DvE"}
1
+ {"version":3,"file":"supabase.d.ts","sourceRoot":"","sources":["../../src/data/supabase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AA0VpD,wBAAgB,+BAA+B,IAAI,qBAAqB,CA46DvE"}
@@ -64,6 +64,9 @@ export interface FinancialDataProvider {
64
64
  getBankAccounts(): Promise<BankAccount[]>;
65
65
  /** Server-side lookup across ledger accounts, including people and units. */
66
66
  searchFinancialAccounts?(query: string, limit?: number): Promise<BankAccount[]>;
67
+ /** Names ledger accounts by id, inactive ones included — a payment keeps
68
+ * pointing at the account it left even after that account is closed. */
69
+ getAccountsByIds?(ids: string[]): Promise<BankAccount[]>;
67
70
  createBankAccount(data: CreateBankAccountInput): Promise<BankAccount>;
68
71
  updateBankAccount(id: string, data: Partial<BankAccount>): Promise<BankAccount>;
69
72
  getCashSessions(bankAccountId?: string): Promise<CashSession[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/data/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/data/types.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import * as React20 from 'react';
2
2
  import React20__default, { useState, useEffect, useMemo, useRef, useCallback } from 'react';
3
- import { createConnectionStore, connectionSettings, connectionStatus, settingsStatus, connectionRuns, registerTranslations, createSafeDataProvider, registerMessageDefaults, reportDataError, useTranslation, createPendingCommand, useDataChanged, countByTenant, tl, resolveDataProvider, getSupabaseClientOptional, getActiveTenantId, emitDataChanged, exportCSV } from '@fayz-ai/core';
3
+ import { createConnectionStore, connectionSettings, connectionStatus, settingsStatus, connectionRuns, registerTranslations, createSafeDataProvider, registerMessageDefaults, reportDataError, useTranslation, createPendingCommand, useUnitMode, useDataChanged, countByTenant, tl, resolveDataProvider, getSupabaseClientOptional, getActiveTenantId, emitDataChanged, exportCSV, useActiveUnitId } from '@fayz-ai/core';
4
4
  import { ModalTask, toast, useInModalTaskHost, CurrencyInput, DatePicker, Button, SubpageHeader, defineKpiWidget, defineChartWidget, defineCustomWidget, defineTableWidget, Modal, ModalContent, ModalHeader, ModalTitle, ModalDescription, ModalBody, DataTable, Card, CardContent, Skeleton, Select, SelectTrigger, SelectValue, SelectContent, SelectItem, MultiSelect, PageTransition, ModulePage, Badge, TooltipProvider, ConfirmDialog, Input, Tooltip, TooltipTrigger, TooltipContent, Checkbox, ModalFooter, SearchSelect, DashboardCanvas, ListView, DateRangeControl, PageHeaderActions, RequiredFilter, Hint, useSaveBar, tourAnchor, FilterMenu, FilterMenuRow, WizardSteps, KpiCard, ChartWidget, CardHeader, CardTitle, TableWidget, useDashboardNavigate, GoldCard } from '@fayz-ai/ui';
5
- import { createPluginContext, fayzConnectorOAuth, formatCurrency, RightRailPage, PluginSettingsPanel, dedup, useUnitStore, OrderDetailSkeleton, PageActions, OrderDetailBlock, OrderDetailView, PersonLink, useTenantPluginSettings, useModuleNavigation, usePluginOnboardingGate, usePermissionOptional, useModuleNavAccess, PluginOnboardingGateSkeleton, ModuleActionBar, SettingsGroup, ToggleRow, useAgentSurface, parseViewId, EntitlementGate, UpgradePrompt, createArchetypeLookup, useChatStore, adminNavigateTo, revealPage, GetStarted, useAuth, resolveEntityRoute, PermissionGate, useLookupCreate, OrderFormSkeleton, OrderFormView, OrderFormBlock, OrderFormItemsCard, OrderFormItemRow, OrderFormAddItemStep, useLimitGuard, invalidateLimit, askAI, requestChatUpload, toInlineFile } from '@fayz-ai/admin';
5
+ import { createPluginContext, fayzConnectorOAuth, formatCurrency, RightRailPage, PluginSettingsPanel, dedup, useUnitStore, OrderDetailSkeleton, PageActions, OrderDetailBlock, OrderDetailView, PersonLink, useTenantPluginSettings, useModuleNavigation, usePluginOnboardingGate, usePermissionOptional, useModuleNavAccess, PluginOnboardingGateSkeleton, ModuleActionBar, SettingsGroup, ToggleRow, useAgentSurface, parseViewId, EntitlementGate, UpgradePrompt, createArchetypeLookup, useChatStore, adminNavigateTo, revealPage, GetStarted, useAuth, resolveEntityRoute, PermissionGate, useLookupCreate, OrderFormSkeleton, OrderFormView, OrderFormBlock, OrderFormItemsCard, OrderFormItemRow, OrderFormAddItemStep, useUnitFilter, useLimitGuard, invalidateLimit, askAI, requestChatUpload, toInlineFile } from '@fayz-ai/admin';
6
6
  import { CircleDollarSign, FileText, FileCheck, ArrowRightLeft, CreditCard, QrCode, Banknote, Pencil, Check, X, Ban, CircleDashed, CircleAlert, CircleCheckBig, CircleEllipsis, CalendarDays, ExternalLink, DollarSign, LayoutList, Layers, Paperclip, Camera, Undo2, ChevronDown, Building2, Wallet, Plus, AlertTriangle, Filter, TrendingUp, Copy, Trash2, Search, ChevronsUpDown, ChevronsDownUp, Landmark, Clock, BookOpen, ChevronRight, Info, FolderOpen, Folder, RotateCcw, Calculator, StickyNote, Play, Square, ChevronUp, ClipboardCheck, FileCheck2, FileX2, RefreshCw, Send, CalendarClock, Loader2, BadgeCheck, Gift, Target, Settings, ArrowRight, Receipt, Users, ArrowDownCircle, ArrowUpCircle, Sparkles, Link2, Download, CheckCheck, Pause, MoreVertical, Printer, ShoppingCart, Car, Home, Utensils, Zap, Film, HeartPulse, Dumbbell, Music, ShoppingBag, ArrowLeft, ArrowUpRight, ArrowDownRight, EyeOff, Eye } from 'lucide-react';
7
7
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
8
8
  import { createPortal } from 'react-dom';
@@ -1049,6 +1049,9 @@ function InvoiceListView({ direction, onNew, onNewReceipt, onEdit }) {
1049
1049
  const [accountId, setAccountId] = useState("");
1050
1050
  const [costCenterId, setCostCenterId] = useState("");
1051
1051
  const [unitId, setUnitId] = useState("");
1052
+ const unitMode = useUnitMode();
1053
+ const unitFilter = useUnitFilter();
1054
+ const effectiveUnitId = unitMode ? unitFilter.value : unitId || void 0;
1052
1055
  const [accounts, setAccounts] = useState([]);
1053
1056
  const postable = useMemo(() => postableAccounts(accounts), [accounts]);
1054
1057
  const [costCenters, setCostCenters] = useState([]);
@@ -1112,9 +1115,9 @@ function InvoiceListView({ direction, onNew, onNewReceipt, onEdit }) {
1112
1115
  search: search || void 0,
1113
1116
  accountId: accountId || void 0,
1114
1117
  costCenterId: costCenterId || void 0,
1115
- unitId: unitId || void 0,
1118
+ unitId: effectiveUnitId,
1116
1119
  dateRange
1117
- }), [direction, statusFilter, search, accountId, costCenterId, unitId, dateRange]);
1120
+ }), [direction, statusFilter, search, accountId, costCenterId, effectiveUnitId, dateRange]);
1118
1121
  useEffect(() => {
1119
1122
  fetchInvoices(query);
1120
1123
  }, [query]);
@@ -1260,7 +1263,7 @@ function InvoiceListView({ direction, onNew, onNewReceipt, onEdit }) {
1260
1263
  fields: [
1261
1264
  {
1262
1265
  id: "status",
1263
- label: t2("financial.invoice.statusCol"),
1266
+ label: t2("financial.invoice.columnStatus"),
1264
1267
  icon: CircleDashed,
1265
1268
  activeCount: statusFilter.length,
1266
1269
  render: (_close, q) => /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -1317,7 +1320,7 @@ function InvoiceListView({ direction, onNew, onNewReceipt, onEdit }) {
1317
1320
  ] }) }, c.id))
1318
1321
  ] })
1319
1322
  }] : [],
1320
- ...locations.length > 1 ? [{
1323
+ ...!unitMode && locations.length > 1 ? [{
1321
1324
  id: "unit",
1322
1325
  label: t2("financial.invoice.filterUnit"),
1323
1326
  icon: Building2,
@@ -1344,6 +1347,25 @@ function InvoiceListView({ direction, onNew, onNewReceipt, onEdit }) {
1344
1347
  setUnitId("");
1345
1348
  setStatusFilter([]);
1346
1349
  };
1350
+ const unitPill = unitFilter.visible ? /* @__PURE__ */ jsx(
1351
+ RequiredFilter,
1352
+ {
1353
+ label: unitFilter.label,
1354
+ value: unitFilter.options.find((u) => u.id === unitFilter.value)?.name ?? unitFilter.allLabel,
1355
+ icon: Building2,
1356
+ align: "end",
1357
+ children: (close) => /* @__PURE__ */ jsxs("div", { className: "max-h-72 space-y-0.5 overflow-y-auto", children: [
1358
+ /* @__PURE__ */ jsx(FilterMenuRow, { active: !unitFilter.value, onClick: () => {
1359
+ unitFilter.setValue(void 0);
1360
+ close();
1361
+ }, children: /* @__PURE__ */ jsx("span", { className: "truncate", children: unitFilter.allLabel }) }),
1362
+ unitFilter.options.map((u) => /* @__PURE__ */ jsx(FilterMenuRow, { active: unitFilter.value === u.id, onClick: () => {
1363
+ unitFilter.setValue(u.id);
1364
+ close();
1365
+ }, children: /* @__PURE__ */ jsx("span", { className: "truncate", children: u.name }) }, u.id))
1366
+ ] })
1367
+ }
1368
+ ) : null;
1347
1369
  const periodFilter = /* @__PURE__ */ jsx(
1348
1370
  RequiredFilter,
1349
1371
  {
@@ -1406,6 +1428,7 @@ function InvoiceListView({ direction, onNew, onNewReceipt, onEdit }) {
1406
1428
  onSearchChange: setSearch,
1407
1429
  searchDebounce: 0,
1408
1430
  filtersTrigger: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
1431
+ unitPill,
1409
1432
  periodFilter,
1410
1433
  filtersMenu
1411
1434
  ] }),
@@ -3269,22 +3292,11 @@ function InvoiceFormView({ direction, editId, onSaved, focusReceipt = false, fro
3269
3292
  const config = useFinancialConfig();
3270
3293
  const provider = useFinancialProvider();
3271
3294
  const { currency, itemTypes: itemTypesRaw, locations } = config;
3272
- const [availableLocations, setAvailableLocations] = useState(locations);
3273
- useEffect(() => {
3274
- if (locations.length > 0) {
3275
- setAvailableLocations(locations);
3276
- return;
3277
- }
3278
- let cancelled = false;
3279
- const lookup = createArchetypeLookup({ archetype: "location", entityDef: null });
3280
- void lookup.list?.().then((rows) => {
3281
- if (!cancelled) setAvailableLocations(rows.map((row) => ({ id: row.id, name: row.label })));
3282
- }).catch(() => {
3283
- });
3284
- return () => {
3285
- cancelled = true;
3286
- };
3287
- }, [locations]);
3295
+ const unitMode = useUnitMode();
3296
+ const activeUnitId = useActiveUnitId();
3297
+ const reachableUnits = useUnitFilter().options;
3298
+ const unitChoices = unitMode ? reachableUnits : locations;
3299
+ const showUnitField = unitChoices.length > 1;
3288
3300
  const [giftCardsEnabled, setGiftCardsEnabled] = useState(false);
3289
3301
  useEffect(() => {
3290
3302
  let cancelled = false;
@@ -3384,7 +3396,17 @@ function InvoiceFormView({ direction, editId, onSaved, focusReceipt = false, fro
3384
3396
  addItemsAutomatically: false
3385
3397
  });
3386
3398
  const accountingPolicyRequest = useRef(0);
3387
- const [unitId, setUnitId] = useState(locations[0]?.id ?? "");
3399
+ const defaultUnitId = () => {
3400
+ if (!unitMode) return void 0;
3401
+ if (activeUnitId && reachableUnits.some((u) => u.id === activeUnitId)) return activeUnitId;
3402
+ return reachableUnits.length === 1 ? reachableUnits[0].id : void 0;
3403
+ };
3404
+ const [unitId, setUnitId] = useState(() => (isEdit ? void 0 : defaultUnitId()) ?? locations[0]?.id ?? "");
3405
+ useEffect(() => {
3406
+ if (isEdit || unitId) return;
3407
+ const next = defaultUnitId();
3408
+ if (next) setUnitId(next);
3409
+ }, [isEdit, unitMode, unitId, activeUnitId, reachableUnits]);
3388
3410
  const [invoiceDate, setInvoiceDate] = useState((/* @__PURE__ */ new Date()).toISOString().slice(0, 10));
3389
3411
  const [fiscalNumber, setFiscalNumber] = useState("");
3390
3412
  const [observations, setObservations] = useState("");
@@ -3982,7 +4004,7 @@ function InvoiceFormView({ direction, editId, onSaved, focusReceipt = false, fro
3982
4004
  ] }) });
3983
4005
  const sideSections = /* @__PURE__ */ jsxs(Fragment, { children: [
3984
4006
  /* @__PURE__ */ jsx(OrderFormBlock, { title: t2("financial.invoice.details"), children: /* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
3985
- /* @__PURE__ */ jsx(LocationSelector, { locations: availableLocations, value: unitId, onChange: setUnitId }),
4007
+ showUnitField && /* @__PURE__ */ jsx(LocationSelector, { locations: unitChoices, value: unitId, onChange: setUnitId }),
3986
4008
  /* @__PURE__ */ jsxs("div", { children: [
3987
4009
  /* @__PURE__ */ jsx("label", { className: "text-xs font-medium text-muted-foreground", children: t2("financial.invoiceForm.date") }),
3988
4010
  isEdit ? /* @__PURE__ */ jsx("p", { className: "mt-1 px-1 py-2 text-sm", children: (/* @__PURE__ */ new Date(`${invoiceDate}T00:00:00`)).toLocaleDateString() }) : /* @__PURE__ */ jsx(DatePicker, { value: invoiceDate, onChange: setInvoiceDate, className: "mt-1" })
@@ -4277,6 +4299,27 @@ function groupPaymentsByBill(bills, payments) {
4277
4299
  }
4278
4300
  return { byBillId, unattributed };
4279
4301
  }
4302
+
4303
+ // src/lib/payment-how.ts
4304
+ var NOT_A_HOLDER = /* @__PURE__ */ new Set(["person", "system"]);
4305
+ function paymentHolderId(p) {
4306
+ if (p.bankAccountId) return p.bankAccountId;
4307
+ return p.direction === "debit" ? p.creditAccountId : p.debitAccountId;
4308
+ }
4309
+ function describePayment(p, ctx2) {
4310
+ const registry = ctx2.paymentMethods.find((m) => m.id === p.paymentMethodId);
4311
+ const type = ctx2.paymentMethodTypes.find((tp) => tp.id === (registry?.paymentMethodTypeId ?? p.paymentMethodTypeId));
4312
+ let method = [type?.name, registry?.name].filter(Boolean).join(" \xB7 ") || void 0;
4313
+ if (!method && p.method) {
4314
+ const key = `financial.method.${p.method}`;
4315
+ const label = ctx2.t(key);
4316
+ method = label && label !== key ? label : p.method;
4317
+ }
4318
+ const holderId = paymentHolderId(p);
4319
+ const holder = holderId ? ctx2.accountsById.get(holderId) : void 0;
4320
+ const account = holder && !NOT_A_HOLDER.has(holder.accountType) ? holder : void 0;
4321
+ return { method, account };
4322
+ }
4280
4323
  var STATUS_COLORS = {
4281
4324
  open: { bg: "bg-info-soft text-info-soft-foreground", icon: CircleDashed, labelKey: "financial.invoice.statusOpen", tone: "info" },
4282
4325
  pending: { bg: "bg-warning-soft text-warning-soft-foreground", icon: CircleDashed, labelKey: "financial.invoice.statusPending", tone: "warning" },
@@ -4306,12 +4349,14 @@ function InvoiceDetailView({ invoiceId, direction, onBack, onEdit, backLabel, em
4306
4349
  const [detailsLoaded, setDetailsLoaded] = useState(false);
4307
4350
  const [detailsLoading, setDetailsLoading] = useState(false);
4308
4351
  const [invoice, setInvoice] = useState(null);
4309
- const unitName = useUnitStore((st) => invoice?.unitId ? st.byId[invoice.unitId]?.name : void 0);
4352
+ const unitMode = useUnitMode();
4353
+ const unitName = useUnitStore((st) => unitMode && invoice?.unitId ? st.byId[invoice.unitId]?.name : void 0);
4310
4354
  const [items, setItems] = useState([]);
4311
4355
  const [attachments, setAttachments] = useState([]);
4312
4356
  const [viewing, setViewing] = useState(null);
4313
4357
  const [movements, setMovements] = useState([]);
4314
4358
  const [payments, setPayments] = useState([]);
4359
+ const [holders, setHolders] = useState(/* @__PURE__ */ new Map());
4315
4360
  const [loading, setLoading] = useState(true);
4316
4361
  const [error, setError] = useState(null);
4317
4362
  const [reversing, setReversing] = useState(null);
@@ -4360,9 +4405,9 @@ function InvoiceDetailView({ invoiceId, direction, onBack, onEdit, backLabel, em
4360
4405
  setMovements(
4361
4406
  movResult.data.filter((m) => m.invoiceId === invoiceId && m.movementKind === "bill").sort((a, b) => (a.installmentNumber ?? 0) - (b.installmentNumber ?? 0))
4362
4407
  );
4363
- setPayments(
4364
- movResult.data.filter((m) => m.invoiceId === invoiceId && m.movementKind === "payment").sort((a, b) => (a.paymentDate ?? "").localeCompare(b.paymentDate ?? ""))
4365
- );
4408
+ const pays = movResult.data.filter((m) => m.invoiceId === invoiceId && m.movementKind === "payment").sort((a, b) => (a.paymentDate ?? "").localeCompare(b.paymentDate ?? ""));
4409
+ setPayments(pays);
4410
+ if (pays.length > 0) void loadPaymentLabels(pays, req);
4366
4411
  } catch (e) {
4367
4412
  if (req !== reqRef.current) return;
4368
4413
  setError(e?.message ?? String(e));
@@ -4384,6 +4429,19 @@ function InvoiceDetailView({ invoiceId, direction, onBack, onEdit, backLabel, em
4384
4429
  document.addEventListener("mousedown", handleClick);
4385
4430
  return () => document.removeEventListener("mousedown", handleClick);
4386
4431
  }, [menuOpen]);
4432
+ async function loadPaymentLabels(pays, req) {
4433
+ const ids = [...new Set(pays.map(paymentHolderId).filter((id) => Boolean(id)))];
4434
+ try {
4435
+ const [accounts] = await Promise.all([
4436
+ ids.length > 0 && provider.getAccountsByIds ? provider.getAccountsByIds(ids) : Promise.resolve([]),
4437
+ fetchPaymentMethods(),
4438
+ fetchBankAccounts()
4439
+ ]);
4440
+ if (req !== reqRef.current) return;
4441
+ setHolders(new Map(accounts.map((a) => [a.id, a])));
4442
+ } catch {
4443
+ }
4444
+ }
4387
4445
  async function loadPaymentDetails() {
4388
4446
  if (detailsLoaded || detailsLoading) return;
4389
4447
  setDetailsLoading(true);
@@ -4439,6 +4497,9 @@ function InvoiceDetailView({ invoiceId, direction, onBack, onEdit, backLabel, em
4439
4497
  ] });
4440
4498
  }
4441
4499
  const settlements = groupPaymentsByBill(movements, payments);
4500
+ const accountsById = new Map(bankAccounts.map((a) => [a.id, a]));
4501
+ for (const [id, a] of holders) accountsById.set(id, a);
4502
+ const howCtx = { paymentMethods: paymentMethods2, paymentMethodTypes, accountsById, t: t2 };
4442
4503
  const statusConfig = STATUS_COLORS[invoice.status] ?? STATUS_COLORS.pending;
4443
4504
  statusConfig.icon;
4444
4505
  const totalPaid = movements.reduce((sum, m) => sum + m.paidAmount, 0);
@@ -4540,12 +4601,10 @@ function InvoiceDetailView({ invoiceId, direction, onBack, onEdit, backLabel, em
4540
4601
  const movStatus = STATUS_COLORS[mov.status] ?? STATUS_COLORS.pending;
4541
4602
  const MovIcon = movStatus.icon;
4542
4603
  const instPayments = settlements.byBillId.get(mov.id) ?? [];
4543
- const paymentSummary = instPayments.map((payment) => {
4544
- const method = paymentMethods2.find((candidate) => candidate.id === payment.paymentMethodId);
4545
- const type = paymentMethodTypes.find((candidate) => candidate.id === (method?.paymentMethodTypeId ?? payment.paymentMethodTypeId));
4546
- const account = bankAccounts.find((candidate) => candidate.id === payment.bankAccountId);
4547
- return [type?.name, method?.name, account?.name].filter(Boolean).join(" \xB7 ");
4548
- }).filter(Boolean).join(" / ");
4604
+ const paymentSummary = [...new Set(instPayments.map((payment) => {
4605
+ const how = describePayment(payment, howCtx);
4606
+ return [how.method, how.account?.name].filter(Boolean).join(" \xB7 ");
4607
+ }).filter(Boolean))].join(" / ");
4549
4608
  return /* @__PURE__ */ jsxs("div", { children: [
4550
4609
  /* @__PURE__ */ jsxs(
4551
4610
  "div",
@@ -4669,19 +4728,12 @@ function InvoiceDetailView({ invoiceId, direction, onBack, onEdit, backLabel, em
4669
4728
  /* @__PURE__ */ jsx("div", { className: "h-3 w-16 rounded bg-muted/30 animate-pulse" }),
4670
4729
  /* @__PURE__ */ jsx("div", { className: "h-3 w-24 rounded bg-muted/40 animate-pulse" })
4671
4730
  ] }) : instPayments.length === 0 ? /* @__PURE__ */ jsx("div", { className: "text-[11px] text-muted-foreground", children: t2("financial.invoice.noDetails") }) : /* @__PURE__ */ jsx("div", { className: "space-y-1", children: instPayments.map((p) => {
4672
- const pMethod = paymentMethods2.find((m) => m.id === p.paymentMethodId);
4673
- const pType = paymentMethodTypes.find((tp) => tp.id === (pMethod?.paymentMethodTypeId ?? p.paymentMethodTypeId));
4674
- const pAccount = bankAccounts.find((a) => a.id === p.bankAccountId);
4731
+ const how = describePayment(p, howCtx);
4675
4732
  return /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-x-1 gap-y-0.5 text-[11px] text-muted-foreground", children: [
4676
4733
  /* @__PURE__ */ jsx("span", { className: "font-medium text-success", children: formatCurrency(p.paidAmount, currency) }),
4677
- pType && /* @__PURE__ */ jsxs(Fragment, { children: [
4734
+ how.method && /* @__PURE__ */ jsxs(Fragment, { children: [
4678
4735
  /* @__PURE__ */ jsx("span", { children: "\xB7" }),
4679
- /* @__PURE__ */ jsx("span", { className: "font-medium text-foreground", children: pType.name }),
4680
- pMethod && /* @__PURE__ */ jsxs("span", { children: [
4681
- "(",
4682
- pMethod.name,
4683
- ")"
4684
- ] })
4736
+ /* @__PURE__ */ jsx("span", { className: "font-medium text-foreground", children: how.method })
4685
4737
  ] }),
4686
4738
  p.cardBrand && /* @__PURE__ */ jsxs(Fragment, { children: [
4687
4739
  /* @__PURE__ */ jsx("span", { children: "\xB7" }),
@@ -4692,10 +4744,10 @@ function InvoiceDetailView({ invoiceId, direction, onBack, onEdit, backLabel, em
4692
4744
  "x"
4693
4745
  ] })
4694
4746
  ] }),
4695
- pAccount && /* @__PURE__ */ jsxs(Fragment, { children: [
4747
+ how.account && /* @__PURE__ */ jsxs(Fragment, { children: [
4696
4748
  /* @__PURE__ */ jsx("span", { children: "\xB7" }),
4697
4749
  /* @__PURE__ */ jsx(Building2, { className: "h-3 w-3 shrink-0" }),
4698
- /* @__PURE__ */ jsx("span", { children: pAccount.name })
4750
+ /* @__PURE__ */ jsx("span", { children: how.account.name })
4699
4751
  ] }),
4700
4752
  (p.feeAmount ?? 0) > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
4701
4753
  /* @__PURE__ */ jsx("span", { children: "\xB7" }),
@@ -4711,7 +4763,7 @@ function InvoiceDetailView({ invoiceId, direction, onBack, onEdit, backLabel, em
4711
4763
  ] }),
4712
4764
  p.notes && /* @__PURE__ */ jsxs(Fragment, { children: [
4713
4765
  /* @__PURE__ */ jsx("span", { children: "\xB7" }),
4714
- /* @__PURE__ */ jsx("span", { className: "italic truncate max-w-[200px]", children: p.notes })
4766
+ /* @__PURE__ */ jsx("span", { className: "italic truncate max-w-[200px]", title: p.notes, children: p.notes })
4715
4767
  ] })
4716
4768
  ] }, p.id);
4717
4769
  }) }) }) })
@@ -8294,22 +8346,22 @@ function buildNav(config, activeView, navigate, t2) {
8294
8346
  onClick: () => navigate("cash-registers")
8295
8347
  });
8296
8348
  }
8297
- items.push({
8349
+ items.push(config.modules.reconciliation ? {
8350
+ id: "statements",
8351
+ label: t2("financial.nav.statements"),
8352
+ icon: "Receipt",
8353
+ active: activeView === "statements" || activeView === "reconciliation",
8354
+ children: [
8355
+ { id: "statements-list", label: t2("financial.nav.list"), active: activeView === "statements", onClick: () => navigate("statements") },
8356
+ { id: "reconciliation", label: t2("financial.nav.reconciliation"), active: activeView === "reconciliation", onClick: () => navigate("reconciliation") }
8357
+ ]
8358
+ } : {
8298
8359
  id: "statements",
8299
8360
  label: t2("financial.nav.statements"),
8300
8361
  icon: "Receipt",
8301
8362
  active: activeView === "statements",
8302
8363
  onClick: () => navigate("statements")
8303
8364
  });
8304
- if (config.modules.reconciliation) {
8305
- items.push({
8306
- id: "reconciliation",
8307
- label: t2("financial.nav.reconciliation"),
8308
- icon: "ArrowLeftRight",
8309
- active: activeView === "reconciliation",
8310
- onClick: () => navigate("reconciliation")
8311
- });
8312
- }
8313
8365
  if (config.modules.notasFiscais) {
8314
8366
  items.push({
8315
8367
  id: "notas-fiscais",
@@ -8355,10 +8407,14 @@ function buildNav(config, activeView, navigate, t2) {
8355
8407
  onClick: () => navigate("cards")
8356
8408
  });
8357
8409
  }
8358
- for (const item of items) {
8359
- const feature = config.navFeatureMap[item.id];
8360
- if (feature) item.feature = feature;
8361
- }
8410
+ const tag = (list) => {
8411
+ for (const item of list) {
8412
+ const feature = config.navFeatureMap[item.id];
8413
+ if (feature) item.feature = feature;
8414
+ if (item.children) tag(item.children);
8415
+ }
8416
+ };
8417
+ tag(items);
8362
8418
  return items;
8363
8419
  }
8364
8420
  function FinancialPage({ config: appConfig, provider, store: store6, registries }) {
@@ -9253,6 +9309,9 @@ function createMockFinancialProvider(options) {
9253
9309
  async getBankAccounts() {
9254
9310
  return store6.bankAccounts.filter((a) => a.isActive);
9255
9311
  },
9312
+ async getAccountsByIds(ids) {
9313
+ return store6.bankAccounts.filter((a) => ids.includes(a.id));
9314
+ },
9256
9315
  async searchFinancialAccounts(query, limit = 20) {
9257
9316
  const term = query.trim().toLocaleLowerCase("pt-BR");
9258
9317
  if (term.length < 2) return [];
@@ -10447,6 +10506,16 @@ function createSupabaseFinancialProvider() {
10447
10506
  accountType: r.kind
10448
10507
  }));
10449
10508
  },
10509
+ async getAccountsByIds(ids) {
10510
+ if (ids.length === 0) return [];
10511
+ const { pub } = getClients();
10512
+ const { data, error } = await pub.from("plg_financial_accounts").select("*").in("id", ids);
10513
+ if (error) throw error;
10514
+ return (data ?? []).map((r) => ({
10515
+ ...snakeToCamel(r),
10516
+ accountType: r.kind
10517
+ }));
10518
+ },
10450
10519
  async searchFinancialAccounts(query, limit = 20) {
10451
10520
  const term = query.trim();
10452
10521
  if (term.length < 2) return [];