@fayz-ai/plugin-financial 0.13.0 → 0.14.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.
package/dist/context.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { formatCurrency, type CurrencyConfig, type EntityLookupMap, type EntityLookup } from '@fayz-ai/admin';
2
- import type { FinancialPluginLabels, ItemTypeOption } from './index';
2
+ import type { FinancialFiscalProviderConfig, FinancialPluginLabels, ItemTypeOption } from './index';
3
3
  import type { FinancialDataProvider } from './data/types';
4
4
  import type { FinancialUIState } from './store';
5
5
  export interface FinancialModules {
@@ -36,6 +36,8 @@ export interface ResolvedFinancialConfig {
36
36
  locations: LocationOption[];
37
37
  entityLookups: EntityLookupMap;
38
38
  contactLookup?: EntityLookup;
39
+ /** Provider capability advertised by an app-installed fiscal addon. */
40
+ fiscalProvider?: FinancialFiscalProviderConfig;
39
41
  /** Ver FinancialPluginOptions.moduleNav. */
40
42
  moduleNav?: 'rail' | 'tabs' | 'sidebar';
41
43
  onBookingClick?: (orderId: string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuB,cAAc,EAAE,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAClI,OAAO,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AACpE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAM/C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,CAAA;IACjB,WAAW,EAAE,OAAO,CAAA;IACpB,aAAa,EAAE,OAAO,CAAA;IACtB,UAAU,EAAE,OAAO,CAAA;IACnB,WAAW,EAAE,OAAO,CAAA;IACpB,KAAK,EAAE,OAAO,CAAA;IACd,uEAAuE;IACvE,KAAK,EAAE,OAAO,CAAA;IACd,SAAS,EAAE,OAAO,CAAA;IAClB,mGAAmG;IACnG,cAAc,EAAE,OAAO,CAAA;IACvB,sFAAsF;IACtF,YAAY,EAAE,OAAO,CAAA;CACtB;AAED,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAA;AAE9C,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,gBAAgB,CAAA;IACzB,MAAM,EAAE,qBAAqB,CAAA;IAC7B,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,SAAS,EAAE,cAAc,EAAE,CAAA;IAC3B,sBAAsB,EAAE,OAAO,CAAA;IAC/B,aAAa,EAAE;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IACvD,SAAS,EAAE,cAAc,EAAE,CAAA;IAC3B,aAAa,EAAE,eAAe,CAAA;IAC9B,aAAa,CAAC,EAAE,YAAY,CAAA;IAC5B,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;IACvC,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1C;;;;2CAIuC;IACvC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACtC;AAID,eAAO,MAAM,wBAAwB;;;;;EAAsB,CAAA;AAC3D,eAAO,MAAM,kBAAkB,+BAAgB,CAAA;AAC/C,eAAO,MAAM,oBAAoB,6BAAkB,CAAA;AACnD,eAAO,MAAM,iBAAiB,oDAAe,CAAA;AAE7C,OAAO,EAAE,cAAc,EAAE,CAAA"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuB,cAAc,EAAE,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAClI,OAAO,KAAK,EAAE,6BAA6B,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AACnG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAM/C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,CAAA;IACjB,WAAW,EAAE,OAAO,CAAA;IACpB,aAAa,EAAE,OAAO,CAAA;IACtB,UAAU,EAAE,OAAO,CAAA;IACnB,WAAW,EAAE,OAAO,CAAA;IACpB,KAAK,EAAE,OAAO,CAAA;IACd,uEAAuE;IACvE,KAAK,EAAE,OAAO,CAAA;IACd,SAAS,EAAE,OAAO,CAAA;IAClB,mGAAmG;IACnG,cAAc,EAAE,OAAO,CAAA;IACvB,sFAAsF;IACtF,YAAY,EAAE,OAAO,CAAA;CACtB;AAED,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAA;AAE9C,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,gBAAgB,CAAA;IACzB,MAAM,EAAE,qBAAqB,CAAA;IAC7B,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,SAAS,EAAE,cAAc,EAAE,CAAA;IAC3B,sBAAsB,EAAE,OAAO,CAAA;IAC/B,aAAa,EAAE;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IACvD,SAAS,EAAE,cAAc,EAAE,CAAA;IAC3B,aAAa,EAAE,eAAe,CAAA;IAC9B,aAAa,CAAC,EAAE,YAAY,CAAA;IAC5B,uEAAuE;IACvE,cAAc,CAAC,EAAE,6BAA6B,CAAA;IAC9C,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;IACvC,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1C;;;;2CAIuC;IACvC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACtC;AAID,eAAO,MAAM,wBAAwB;;;;;EAAsB,CAAA;AAC3D,eAAO,MAAM,kBAAkB,+BAAgB,CAAA;AAC/C,eAAO,MAAM,oBAAoB,6BAAkB,CAAA;AACnD,eAAO,MAAM,iBAAiB,oDAAe,CAAA;AAE7C,OAAO,EAAE,cAAc,EAAE,CAAA"}
@@ -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,EAQ3B,MAAM,UAAU,CAAA;AA6HjB;;;;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;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,CAosBzG"}
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,EAQ3B,MAAM,UAAU,CAAA;AAkIjB;;;;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;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,CAssBzG"}
@@ -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;AAwRpD,wBAAgB,+BAA+B,IAAI,qBAAqB,CA2/CvE"}
1
+ {"version":3,"file":"supabase.d.ts","sourceRoot":"","sources":["../../src/data/supabase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAwRpD,wBAAgB,+BAA+B,IAAI,qBAAqB,CAygDvE"}
@@ -1,5 +1,7 @@
1
1
  export declare const T: {
2
2
  readonly movements: "plg_financial_movements";
3
+ readonly cashMovements: "v_financial_cash_movements";
4
+ readonly accountBalances: "v_financial_account_balances";
3
5
  readonly chartOfAccounts: "plg_financial_chart_of_accounts";
4
6
  readonly bankAccounts: "plg_financial_bank_accounts";
5
7
  readonly cardBrands: "plg_financial_card_brands";
@@ -1 +1 @@
1
- {"version":3,"file":"tables.d.ts","sourceRoot":"","sources":["../../src/data/tables.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;CAmCJ,CAAA"}
1
+ {"version":3,"file":"tables.d.ts","sourceRoot":"","sources":["../../src/data/tables.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqCJ,CAAA"}
@@ -87,6 +87,10 @@ export interface FinancialDataProvider {
87
87
  updateNota?(id: string, data: Partial<NotaFiscal>): Promise<NotaFiscal>;
88
88
  /** Request authorization. Decoupled from the fiscal gateway — see note above. */
89
89
  issueNota?(id: string): Promise<NotaFiscal>;
90
+ /** Reconcile an asynchronous issuer result with the server-committed document. */
91
+ refreshNota?(id: string): Promise<NotaFiscal>;
92
+ /** Resolve a short-lived artifact URL just in time; signed URLs are not ledger fields. */
93
+ getNotaArtifactUrl?(id: string, kind: 'xml' | 'pdf' | 'cancellation_xml'): Promise<string>;
90
94
  cancelNota?(id: string, reason?: string): Promise<NotaFiscal>;
91
95
  }
92
96
  //# sourceMappingURL=types.d.ts.map
@@ -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.d.ts CHANGED
@@ -35,6 +35,16 @@ export interface ItemTypeOption {
35
35
  label: string;
36
36
  icon?: string;
37
37
  }
38
+ /**
39
+ * Provider-neutral fiscal capability. The Financial plugin owns the document;
40
+ * an addon supplies the gateway and tells the host which journey is available.
41
+ */
42
+ export interface FinancialFiscalProviderConfig {
43
+ label: string;
44
+ models: import('./types').NotaFiscalModel[];
45
+ /** NFC-e providers derive the legal payload from an order, never a typed total. */
46
+ requiresOrder?: boolean;
47
+ }
38
48
  export interface FinancialPluginOptions {
39
49
  /** Where the module's sub-nav lives. The views already read it; only the
40
50
  * option was missing, so an app asking for 'sidebar' failed to compile. */
@@ -72,6 +82,8 @@ export interface FinancialPluginOptions {
72
82
  verticalId?: VerticalId;
73
83
  /** Data provider. Defaults to mock (in-memory) if not supplied. */
74
84
  dataProvider?: FinancialDataProvider;
85
+ /** Installed fiscal addon capability. Omit to keep local/manual tracking. */
86
+ fiscalProvider?: FinancialFiscalProviderConfig;
75
87
  /** Available item types for invoice lines. Default: product + service + other */
76
88
  itemTypes?: ItemTypeOption[];
77
89
  /** Enable service execution tracking on invoice items (default: false) */
@@ -140,7 +152,7 @@ export declare const FINANCIAL_NAV_FEATURES: {
140
152
  export declare function createFinancialPlugin(options?: FinancialPluginOptions): PluginManifest;
141
153
  export type { FinancialDataProvider } from './data/types';
142
154
  export type { ResolvedFinancialConfig } from './context';
143
- export type { GiftCard, GiftCardState, GiftCardQuery, IssueGiftCardsInput } from './types';
155
+ export type { GiftCard, GiftCardState, GiftCardQuery, IssueGiftCardsInput, NotaFiscal, NotaFiscalModel, NotaFiscalStatus, NotaFiscalQuery, CreateNotaFiscalInput, } from './types';
144
156
  export { createMockFinancialProvider } from './data/mock';
145
157
  export type { MockFinancialSeed, MockFinancialProviderOptions } from './data/mock';
146
158
  export { buildFinancialDomainEvents, buildFinancialMessageDefaults } from './lib/message-events';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@ import React14__default, { useState, useEffect, useMemo, useCallback, useRef } f
3
3
  import { createConnectionStore, connectionSettings, connectionStatus, settingsStatus, connectionRuns, registerTranslations, createSafeDataProvider, registerMessageDefaults, useTranslation, countByTenant, getSupabaseClientOptional, getActiveTenantId, exportCSV } from '@fayz-ai/core';
4
4
  import { toast, CurrencyInput, DatePicker, Button, defineKpiWidget, defineChartWidget, defineCustomWidget, defineTableWidget, Modal, ModalContent, ModalHeader, ModalTitle, ModalDescription, ModalBody, DataTable, PageTransition, ModulePage, SubpageHeader, Skeleton, Badge, TooltipProvider, ConfirmDialog, MultiSelect, Tooltip, TooltipTrigger, TooltipContent, Input, Checkbox, ModalFooter, DashboardCanvas, PageHeaderActions, Card, FilterChip, useSaveBar, SearchSelect, ListView, KpiCard, ChartWidget, CardHeader, CardTitle, CardContent, TableWidget, useDashboardNavigate, GoldCard } from '@fayz-ai/ui';
5
5
  import { createPluginContext, fayzConnectorOAuth, formatCurrency, RightRailPage, PluginSettingsPanel, dedup, useModuleNavigation, usePermissionOptional, useModuleNavAccess, ModuleActionBar, useTenantPluginSettings, SettingsGroup, ToggleRow, TeachMeLink, parseViewId, EntitlementGate, UpgradePrompt, GetStarted, useAuth, PermissionGate, PersonLink, useLimitGuard, useLookupCreate, OrderFormSkeleton, OrderFormBlock, OrderFormView, OrderFormItemsCard, OrderFormItemRow, OrderFormAddItemStep, OrderDetailSkeleton, PageActions, OrderDetailBlock, OrderDetailView, invalidateLimit, askAI, requestChatUpload, toInlineFile, useChatStore, useAgentSurface, revealPage } from '@fayz-ai/admin';
6
- import { CircleDollarSign, FileText, X, FileCheck, ArrowRightLeft, CreditCard, QrCode, Banknote, Pencil, Check, Wallet, Plus, AlertTriangle, Filter, TrendingUp, Copy, DollarSign, Trash2, Landmark, ChevronDown, Clock, BookOpen, ChevronRight, Info, Calculator, StickyNote, Play, Square, ChevronUp, ClipboardCheck, FileCheck2, ExternalLink, Send, Ban, CalendarClock, Gift, Loader2, BadgeCheck, Target, Settings, ArrowRight, Receipt, Users, RefreshCw, ArrowDownCircle, ArrowUpCircle, Sparkles, Link2, Search, Download, Paperclip, CheckCheck, MoreVertical, CircleCheckBig, CircleDashed, Camera, CircleAlert, CircleEllipsis, CalendarDays, LayoutList, Layers, Undo2, Building2, ShoppingCart, Car, Home, Utensils, Zap, Film, HeartPulse, Dumbbell, Music, ShoppingBag, ArrowUpRight, ArrowDownRight, EyeOff, Eye } from 'lucide-react';
6
+ import { CircleDollarSign, FileText, X, FileCheck, ArrowRightLeft, CreditCard, QrCode, Banknote, Pencil, Check, Wallet, Plus, AlertTriangle, Filter, TrendingUp, Copy, DollarSign, Trash2, Landmark, ChevronDown, Clock, BookOpen, ChevronRight, Info, Calculator, StickyNote, Play, Square, ChevronUp, ClipboardCheck, FileCheck2, ExternalLink, FileX2, RefreshCw, Send, Ban, CalendarClock, Gift, Loader2, BadgeCheck, Target, Settings, ArrowRight, Receipt, Users, ArrowDownCircle, ArrowUpCircle, Sparkles, Link2, Search, Download, Paperclip, CheckCheck, MoreVertical, CircleCheckBig, CircleDashed, Camera, CircleAlert, CircleEllipsis, CalendarDays, LayoutList, Layers, Undo2, Building2, ShoppingCart, Car, Home, Utensils, Zap, Film, HeartPulse, Dumbbell, Music, ShoppingBag, ArrowUpRight, ArrowDownRight, EyeOff, Eye } from 'lucide-react';
7
7
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
8
8
  import { createPortal } from 'react-dom';
9
9
  import { createStore as createStore$1 } from 'zustand/vanilla';
@@ -5162,12 +5162,14 @@ var STATUS_META = {
5162
5162
  };
5163
5163
  function NotasFiscaisView() {
5164
5164
  const provider = useFinancialProvider();
5165
- const { currency } = useFinancialConfig();
5165
+ const { currency, fiscalProvider } = useFinancialConfig();
5166
5166
  const [notas, setNotas] = useState([]);
5167
5167
  const [loading, setLoading] = useState(true);
5168
5168
  const [creating, setCreating] = useState(false);
5169
5169
  const [busy, setBusy] = useState(null);
5170
5170
  const supported = typeof provider.getNotas === "function";
5171
+ const requiresOrder = fiscalProvider?.requiresOrder === true;
5172
+ const canCreateManually = typeof provider.createNota === "function" && !requiresOrder;
5171
5173
  const reload = useCallback(async () => {
5172
5174
  if (!provider.getNotas) {
5173
5175
  setLoading(false);
@@ -5185,7 +5187,7 @@ function NotasFiscaisView() {
5185
5187
  void reload();
5186
5188
  }, [reload]);
5187
5189
  const create = async (input) => {
5188
- if (!provider.createNota) return;
5190
+ if (!provider.createNota || requiresOrder) return;
5189
5191
  await provider.createNota(input);
5190
5192
  setCreating(false);
5191
5193
  await reload();
@@ -5202,14 +5204,41 @@ function NotasFiscaisView() {
5202
5204
  };
5203
5205
  const cancel = async (id) => {
5204
5206
  if (!provider.cancelNota) return;
5207
+ const reason = window.prompt("Informe a justificativa fiscal do cancelamento (15 a 255 caracteres):");
5208
+ if (reason === null) return;
5209
+ const normalized = reason.trim();
5210
+ if (normalized.length < 15 || normalized.length > 255) {
5211
+ window.alert("A justificativa fiscal deve ter entre 15 e 255 caracteres.");
5212
+ return;
5213
+ }
5214
+ setBusy(id);
5215
+ try {
5216
+ await provider.cancelNota(id, normalized);
5217
+ await reload();
5218
+ } finally {
5219
+ setBusy(null);
5220
+ }
5221
+ };
5222
+ const refresh = async (id) => {
5223
+ if (!provider.refreshNota) return;
5205
5224
  setBusy(id);
5206
5225
  try {
5207
- await provider.cancelNota(id);
5226
+ await provider.refreshNota(id);
5208
5227
  await reload();
5209
5228
  } finally {
5210
5229
  setBusy(null);
5211
5230
  }
5212
5231
  };
5232
+ const openArtifact = async (nota, kind) => {
5233
+ try {
5234
+ const fallback = kind === "xml" ? nota.xmlUrl : kind === "pdf" ? nota.danfeUrl : void 0;
5235
+ const url = provider.getNotaArtifactUrl ? await provider.getNotaArtifactUrl(nota.id, kind) : fallback;
5236
+ if (!url) throw new Error("O arquivo fiscal ainda n\xE3o est\xE1 dispon\xEDvel.");
5237
+ window.open(url, "_blank", "noopener,noreferrer");
5238
+ } catch (error) {
5239
+ window.alert(error instanceof Error ? error.message : "N\xE3o foi poss\xEDvel abrir o arquivo fiscal.");
5240
+ }
5241
+ };
5213
5242
  if (!supported) {
5214
5243
  return /* @__PURE__ */ jsxs("div", { className: "p-1", children: [
5215
5244
  /* @__PURE__ */ jsx(SubpageHeader, { title: "Notas Fiscais", subtitle: "Emiss\xE3o e acompanhamento de NF-e / NFC-e / NFS-e", icon: "FileText" }),
@@ -5229,18 +5258,23 @@ function NotasFiscaisView() {
5229
5258
  {
5230
5259
  feature: "financial.notas-fiscais",
5231
5260
  title: "Notas Fiscais",
5232
- about: "O acompanhamento das notas da casa \u2014 NF-e, NFC-e e NFS-e \u2014 do rascunho at\xE9 a emiss\xE3o. A emiss\xE3o fiscal de verdade (SEFAZ) ainda n\xE3o est\xE1 integrada: 'Emitir' numera localmente, para controle interno."
5261
+ about: fiscalProvider ? `Acompanhamento fiscal integrado com ${fiscalProvider.label}. A situa\xE7\xE3o final e os arquivos s\xE3o confirmados pelo servidor.` : "O acompanhamento das notas da casa. Sem um addon fiscal, 'Emitir' numera localmente para controle interno."
5233
5262
  }
5234
5263
  ),
5235
- /* @__PURE__ */ jsx(PermissionGate, { feature: "financial", action: "create", children: /* @__PURE__ */ jsxs(Button, { size: "sm", onClick: () => setCreating(true), children: [
5264
+ canCreateManually && /* @__PURE__ */ jsx(PermissionGate, { feature: "financial", action: "create", children: /* @__PURE__ */ jsxs(Button, { size: "sm", onClick: () => setCreating(true), children: [
5236
5265
  /* @__PURE__ */ jsx(Plus, { className: "mr-1.5 h-4 w-4" }),
5237
5266
  " Nova nota"
5238
5267
  ] }) })
5239
5268
  ] })
5240
5269
  }
5241
5270
  ),
5242
- /* @__PURE__ */ jsx("div", { className: "mt-3 rounded-md border border-amber-300/50 bg-amber-50 px-3 py-2 text-xs text-amber-800 dark:bg-amber-950/30 dark:text-amber-300", children: 'Emiss\xE3o fiscal (SEFAZ) ainda n\xE3o integrada \u2014 "Emitir" atribui n\xFAmero/s\xE9rie localmente para acompanhamento. A integra\xE7\xE3o com o emissor entra sem mudar esta tela.' }),
5243
- creating && /* @__PURE__ */ jsx(CreateForm, { onCancel: () => setCreating(false), onCreate: create }),
5271
+ fiscalProvider ? /* @__PURE__ */ jsxs("div", { className: "mt-3 rounded-md border border-emerald-300/50 bg-emerald-50 px-3 py-2 text-xs text-emerald-800 dark:bg-emerald-950/30 dark:text-emerald-300", children: [
5272
+ "Emiss\xE3o integrada com ",
5273
+ fiscalProvider.label,
5274
+ ".",
5275
+ requiresOrder ? " A NFC-e nasce do pedido, que fornece itens, pagamentos e total." : ""
5276
+ ] }) : /* @__PURE__ */ jsx("div", { className: "mt-3 rounded-md border border-amber-300/50 bg-amber-50 px-3 py-2 text-xs text-amber-800 dark:bg-amber-950/30 dark:text-amber-300", children: 'Emiss\xE3o fiscal (SEFAZ) ainda n\xE3o integrada \u2014 "Emitir" atribui n\xFAmero/s\xE9rie localmente para acompanhamento.' }),
5277
+ creating && canCreateManually && /* @__PURE__ */ jsx(CreateForm, { onCancel: () => setCreating(false), onCreate: create }),
5244
5278
  loading ? /* @__PURE__ */ jsx("div", { className: "mt-4 space-y-2", children: Array.from({ length: 4 }).map((_, i) => /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 rounded-card border border-border bg-card p-3", children: [
5245
5279
  /* @__PURE__ */ jsx(Skeleton, { className: "h-9 w-9 shrink-0 rounded-full" }),
5246
5280
  /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1 space-y-2", children: [
@@ -5251,7 +5285,7 @@ function NotasFiscaisView() {
5251
5285
  ] }, i)) }) : notas.length === 0 ? /* @__PURE__ */ jsxs("div", { className: "mt-4 rounded-card border border-dashed border-border p-8 text-center", children: [
5252
5286
  /* @__PURE__ */ jsx(FileText, { className: "mx-auto h-8 w-8 text-muted-foreground" }),
5253
5287
  /* @__PURE__ */ jsx("p", { className: "mt-2 text-sm font-medium text-foreground", children: "Nenhuma nota fiscal ainda" }),
5254
- /* @__PURE__ */ jsx("p", { className: "mt-1 text-xs text-muted-foreground", children: "Crie uma nota a partir de um pedido ou manualmente." })
5288
+ /* @__PURE__ */ jsx("p", { className: "mt-1 text-xs text-muted-foreground", children: requiresOrder ? "Emita a NFC-e a partir de um pedido conclu\xEDdo." : "Crie uma nota a partir de um pedido ou manualmente." })
5255
5289
  ] }) : /* @__PURE__ */ jsx("div", { className: "mt-4 space-y-2", children: notas.map((n) => {
5256
5290
  const meta = STATUS_META[n.status];
5257
5291
  return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 rounded-card border border-border bg-card p-3", children: [
@@ -5273,8 +5307,10 @@ function NotasFiscaisView() {
5273
5307
  ] })
5274
5308
  ] }),
5275
5309
  /* @__PURE__ */ jsxs("div", { className: "flex shrink-0 items-center gap-1", children: [
5276
- n.danfeUrl && /* @__PURE__ */ jsx(Button, { size: "sm", variant: "ghost", onClick: () => window.open(n.danfeUrl, "_blank", "noopener,noreferrer"), title: "DANFE", children: /* @__PURE__ */ jsx(FileCheck2, { className: "h-4 w-4" }) }),
5277
- n.xmlUrl && /* @__PURE__ */ jsx(Button, { size: "sm", variant: "ghost", onClick: () => window.open(n.xmlUrl, "_blank", "noopener,noreferrer"), title: "XML", children: /* @__PURE__ */ jsx(ExternalLink, { className: "h-4 w-4" }) }),
5310
+ (n.danfeUrl || provider.getNotaArtifactUrl && ["issued", "cancelled"].includes(n.status)) && /* @__PURE__ */ jsx(Button, { size: "sm", variant: "ghost", onClick: () => void openArtifact(n, "pdf"), title: "DANFE", children: /* @__PURE__ */ jsx(FileCheck2, { className: "h-4 w-4" }) }),
5311
+ (n.xmlUrl || provider.getNotaArtifactUrl && ["issued", "cancelled"].includes(n.status)) && /* @__PURE__ */ jsx(Button, { size: "sm", variant: "ghost", onClick: () => void openArtifact(n, "xml"), title: "XML", children: /* @__PURE__ */ jsx(ExternalLink, { className: "h-4 w-4" }) }),
5312
+ provider.getNotaArtifactUrl && n.status === "cancelled" && /* @__PURE__ */ jsx(Button, { size: "sm", variant: "ghost", onClick: () => void openArtifact(n, "cancellation_xml"), title: "XML do cancelamento", children: /* @__PURE__ */ jsx(FileX2, { className: "h-4 w-4" }) }),
5313
+ provider.refreshNota && (n.status === "processing" || n.status === "error") && /* @__PURE__ */ jsx(PermissionGate, { feature: "financial", action: "edit", children: /* @__PURE__ */ jsx(Button, { size: "sm", variant: "ghost", disabled: busy === n.id, onClick: () => refresh(n.id), title: "Atualizar situa\xE7\xE3o", children: /* @__PURE__ */ jsx(RefreshCw, { className: `h-4 w-4 ${busy === n.id ? "animate-spin" : ""}` }) }) }),
5278
5314
  n.status === "draft" && /* @__PURE__ */ jsx(PermissionGate, { feature: "financial", action: "edit", children: /* @__PURE__ */ jsxs(Button, { size: "sm", disabled: busy === n.id, onClick: () => issue(n.id), children: [
5279
5315
  /* @__PURE__ */ jsx(Send, { className: "mr-1.5 h-3.5 w-3.5" }),
5280
5316
  " Emitir"
@@ -5417,7 +5453,7 @@ function buildNav(config, activeView, navigate, t2) {
5417
5453
  icon: "ArrowUpCircle",
5418
5454
  active: activeView.startsWith("payables"),
5419
5455
  children: [
5420
- { id: "payables-new", label: t2("financial.nav.new"), active: activeView.startsWith("payables-new"), onClick: () => navigate("payables-new") },
5456
+ { id: "payables-new", kind: "action", label: t2("financial.nav.new"), active: activeView.startsWith("payables-new"), onClick: () => navigate("payables-new") },
5421
5457
  { id: "payables-list", label: t2("financial.nav.list"), active: activeView === "payables-list", onClick: () => navigate("payables-list") },
5422
5458
  { id: "payables-recurring", label: t2("financial.nav.recurringExpenses"), active: activeView === "payables-recurring", onClick: () => navigate("payables-recurring") }
5423
5459
  ]
@@ -5430,7 +5466,7 @@ function buildNav(config, activeView, navigate, t2) {
5430
5466
  icon: "ArrowDownCircle",
5431
5467
  active: activeView.startsWith("receivables"),
5432
5468
  children: [
5433
- { id: "receivables-new", label: t2("financial.nav.new"), active: activeView.startsWith("receivables-new"), onClick: () => navigate("receivables-new") },
5469
+ { id: "receivables-new", kind: "action", label: t2("financial.nav.new"), active: activeView.startsWith("receivables-new"), onClick: () => navigate("receivables-new") },
5434
5470
  { id: "receivables-list", label: t2("financial.nav.list"), active: activeView === "receivables-list", onClick: () => navigate("receivables-list") }
5435
5471
  ]
5436
5472
  });
@@ -6053,6 +6089,9 @@ function matchesStatus(status, filter) {
6053
6089
  if (Array.isArray(filter)) return filter.includes(status);
6054
6090
  return status === filter;
6055
6091
  }
6092
+ function affectsCash(movement) {
6093
+ return !movement.externalSource || !!movement.reconciledAt && !movement.matchedMovementId;
6094
+ }
6056
6095
  function paginate(items, page, pageSize) {
6057
6096
  const p = page ?? 1;
6058
6097
  const ps = pageSize ?? 50;
@@ -6497,7 +6536,7 @@ function createMockFinancialProvider(options) {
6497
6536
  // --- Statements (ERP extract: opening balance + realized cash + per-row net/fee) ---
6498
6537
  async getStatement(query) {
6499
6538
  const todayStr = today2();
6500
- const isRealized = (m) => m.status !== "cancelled" && !!m.paymentDate;
6539
+ const isRealized = (m) => m.status !== "cancelled" && !!m.paymentDate && affectsCash(m);
6501
6540
  const consolidated = !query.bankAccountId;
6502
6541
  const scopeAccounts = consolidated ? store6.bankAccounts.filter((a) => a.isActive) : store6.bankAccounts.filter((a) => a.id === query.bankAccountId);
6503
6542
  const accountIds = new Set(scopeAccounts.map((a) => a.id));
@@ -6580,7 +6619,7 @@ function createMockFinancialProvider(options) {
6580
6619
  const monthStart = monthAgo.toISOString().slice(0, 10);
6581
6620
  const monthEnd = todayStr;
6582
6621
  const monthMovements = store6.movements.filter(
6583
- (m) => m.movementKind === "payment" && matchesDateRange(m.paymentDate, dateRange ?? { from: monthStart, to: monthEnd })
6622
+ (m) => affectsCash(m) && m.movementKind === "payment" && matchesDateRange(m.paymentDate, dateRange ?? { from: monthStart, to: monthEnd })
6584
6623
  );
6585
6624
  const overdueReceivable = pendingReceivable.filter((m) => m.dueDate < todayStr);
6586
6625
  const overduePayable = pendingPayable.filter((m) => m.dueDate < todayStr);
@@ -6753,6 +6792,8 @@ function createMockFinancialProvider(options) {
6753
6792
  // src/data/tables.ts
6754
6793
  var T = {
6755
6794
  movements: "plg_financial_movements",
6795
+ cashMovements: "v_financial_cash_movements",
6796
+ accountBalances: "v_financial_account_balances",
6756
6797
  chartOfAccounts: "plg_financial_chart_of_accounts",
6757
6798
  bankAccounts: "plg_financial_bank_accounts",
6758
6799
  cardBrands: "plg_financial_card_brands",
@@ -7492,22 +7533,22 @@ function createSupabaseFinancialProvider() {
7492
7533
  async getStatement(query) {
7493
7534
  const { core, pub } = getClients();
7494
7535
  const today3 = (/* @__PURE__ */ new Date()).toISOString().slice(0, 10);
7495
- const { data: acctRows } = await pub.from(T.bankAccounts).select("id, name, initial_balance, is_active");
7536
+ const { data: acctRows } = await pub.from("plg_financial_accounts").select("id, name, is_active");
7496
7537
  const allAccounts = acctRows ?? [];
7497
7538
  const consolidated = !query.bankAccountId;
7498
7539
  const scopeAccounts = consolidated ? allAccounts.filter((a) => a.is_active) : allAccounts.filter((a) => a.id === query.bankAccountId);
7499
7540
  const accountIds = scopeAccounts.map((a) => a.id);
7500
7541
  const accountNameById = new Map(allAccounts.map((a) => [a.id, a.name]));
7501
- const initialSum = scopeAccounts.reduce((s, a) => s + (Number(a.initial_balance) || 0), 0);
7542
+ const initialSum = 0;
7502
7543
  if (!consolidated && accountIds.length === 0) {
7503
7544
  return { entries: [], openingBalance: 0, closingBalance: 0, totalCredits: 0, totalDebits: 0, totalFees: 0, net: 0, accountId: query.bankAccountId };
7504
7545
  }
7505
7546
  const scopeFilter = (qb) => consolidated ? qb : qb.in("bank_account_id", accountIds);
7506
7547
  const netOf = (r) => r.direction === "credit" ? (Number(r.paid_amount) || 0) - (Number(r.fee_amount) || 0) : -(Number(r.paid_amount) || 0);
7507
- const { data: priorRows } = await scopeFilter(pub.from(T.movements).select("*").neq("status", "cancelled").lt("payment_date", query.dateRange.from));
7548
+ const { data: priorRows } = await scopeFilter(pub.from(T.cashMovements).select("*").neq("status", "cancelled").lt("payment_date", query.dateRange.from));
7508
7549
  const priorNet = (priorRows ?? []).reduce((s, r) => s + netOf(r), 0);
7509
7550
  const openingBalance = round22(initialSum + priorNet);
7510
- const { data: movs } = await scopeFilter(pub.from(T.movements).select("*").neq("status", "cancelled").gte("payment_date", query.dateRange.from).lte("payment_date", query.dateRange.to).order("payment_date").order("created_at"));
7551
+ const { data: movs } = await scopeFilter(pub.from(T.cashMovements).select("*").neq("status", "cancelled").gte("payment_date", query.dateRange.from).lte("payment_date", query.dateRange.to).order("payment_date").order("created_at"));
7511
7552
  const invoiceIds = [...new Set((movs ?? []).map((r) => r.invoice_id).filter(Boolean))];
7512
7553
  const invoiceById = /* @__PURE__ */ new Map();
7513
7554
  if (invoiceIds.length) {
@@ -7571,7 +7612,7 @@ function createSupabaseFinancialProvider() {
7571
7612
  };
7572
7613
  }
7573
7614
  }
7574
- const { data: todayRows } = await scopeFilter(pub.from(T.movements).select("*").neq("status", "cancelled").lte("payment_date", today3));
7615
+ const { data: todayRows } = await scopeFilter(pub.from(T.cashMovements).select("*").neq("status", "cancelled").lte("payment_date", today3));
7575
7616
  const accountCurrentBalance = round22(initialSum + (todayRows ?? []).reduce((s, r) => s + netOf(r), 0));
7576
7617
  return {
7577
7618
  entries,
@@ -8051,9 +8092,15 @@ function createSupabaseFinancialProvider() {
8051
8092
  async getSummary(dateRange) {
8052
8093
  sweepOverdue();
8053
8094
  const { pub } = getClients();
8054
- const { data: accounts } = await pub.from(T.bankAccounts).select("current_balance").eq("is_active", true);
8055
- const totalBalance = (accounts ?? []).reduce((s, a) => s + (a.current_balance ?? 0), 0);
8056
- const { data: movs } = await pub.from(T.movements).select("direction, movement_kind, amount, paid_amount, status, due_date, payment_date");
8095
+ const [{ data: accounts, error: accountsError }, { data: movs, error: movementsError }, { data: cashMovs, error: cashError }] = await Promise.all([
8096
+ pub.from(T.accountBalances).select("balance").eq("is_active", true).in("kind", ["bank", "cash_physical", "cash_session", "card_receivable_credit", "card_receivable_debit"]),
8097
+ pub.from(T.movements).select("direction, movement_kind, amount, paid_amount, status, due_date, payment_date"),
8098
+ pub.from(T.cashMovements).select("direction, movement_kind, paid_amount, payment_date")
8099
+ ]);
8100
+ if (accountsError) throw accountsError;
8101
+ if (movementsError) throw movementsError;
8102
+ if (cashError) throw cashError;
8103
+ const totalBalance = (accounts ?? []).reduce((s, a) => s + (Number(a.balance) || 0), 0);
8057
8104
  const allMovs = movs ?? [];
8058
8105
  const unpaid = allMovs.filter((m) => ["pending", "partial", "overdue"].includes(m.status));
8059
8106
  const today3 = (/* @__PURE__ */ new Date()).toISOString().slice(0, 10);
@@ -8064,7 +8111,8 @@ function createSupabaseFinancialProvider() {
8064
8111
  const monthAgo = /* @__PURE__ */ new Date();
8065
8112
  monthAgo.setDate(monthAgo.getDate() - 30);
8066
8113
  const monthStart = monthAgo.toISOString().slice(0, 10);
8067
- const monthPaid = allMovs.filter((m) => m.movement_kind === "payment" && m.payment_date >= monthStart);
8114
+ const period = dateRange ?? { from: monthStart, to: today3 };
8115
+ const monthPaid = (cashMovs ?? []).filter((m) => m.movement_kind === "payment" && m.payment_date >= period.from && m.payment_date <= period.to);
8068
8116
  return {
8069
8117
  totalBalance,
8070
8118
  totalReceivable: unpaidCredit.reduce((s, m) => s + m.amount - m.paid_amount, 0),
@@ -21271,6 +21319,86 @@ COMMENT ON VIEW public.v_orders_sem_invoice IS
21271
21319
 
21272
21320
  GRANT SELECT ON public.v_orders_sem_invoice TO authenticated, service_role;
21273
21321
  `;
21322
+ var MIGRATION_031_THE_BANK_LINE_IS_EVIDENCE_NOT_A_SECOND_PAYMENT = `-- A bank statement line is evidence of cash movement until reconciliation.
21323
+ -- If matched, the app-native payment remains the sole economic event. If the
21324
+ -- user accepts the line without a match, that line becomes the economic event.
21325
+ CREATE OR REPLACE VIEW public.v_financial_cash_movements
21326
+ WITH (security_invoker = true) AS
21327
+ SELECT movement.*
21328
+ FROM public.plg_financial_movements movement
21329
+ LEFT JOIN public.plg_financial_movements reversed
21330
+ ON reversed.id = movement.reverses_id
21331
+ WHERE CASE
21332
+ -- A reversal has exactly the economic nature of the row it reverses. This
21333
+ -- keeps provider corrections neutral both for matched evidence and for an
21334
+ -- imported line that had previously been accepted as standalone.
21335
+ WHEN reversed.id IS NOT NULL THEN
21336
+ reversed.external_source IS NULL
21337
+ OR (reversed.reconciled_at IS NOT NULL AND reversed.matched_movement_id IS NULL)
21338
+ ELSE
21339
+ movement.external_source IS NULL
21340
+ OR (movement.reconciled_at IS NOT NULL AND movement.matched_movement_id IS NULL)
21341
+ END;
21342
+
21343
+ COMMENT ON VIEW public.v_financial_cash_movements IS
21344
+ 'Economic cash events. Native movements always count; imported statement lines count only after standalone acceptance, never when matched to a native movement. Reversals inherit the economic nature of the row they reverse.';
21345
+
21346
+ GRANT SELECT ON public.v_financial_cash_movements TO authenticated, service_role;
21347
+
21348
+ CREATE OR REPLACE VIEW public.v_financial_account_balances
21349
+ WITH (security_invoker = true) AS
21350
+ WITH debits AS (
21351
+ SELECT movement.debit_account_id AS account_id,
21352
+ sum(movement.amount) AS total,
21353
+ count(*) AS n
21354
+ FROM public.v_financial_cash_movements movement
21355
+ WHERE movement.status <> 'cancelled'
21356
+ AND movement.debit_account_id IS NOT NULL
21357
+ AND movement.movement_kind IN ('payment', 'transfer')
21358
+ GROUP BY movement.debit_account_id
21359
+ ), credits AS (
21360
+ SELECT movement.credit_account_id AS account_id,
21361
+ sum(movement.amount) AS total,
21362
+ count(*) AS n
21363
+ FROM public.v_financial_cash_movements movement
21364
+ WHERE movement.status <> 'cancelled'
21365
+ AND movement.credit_account_id IS NOT NULL
21366
+ AND movement.movement_kind IN ('payment', 'transfer')
21367
+ GROUP BY movement.credit_account_id
21368
+ )
21369
+ SELECT account.id AS account_id,
21370
+ account.tenant_id,
21371
+ account.unit_id,
21372
+ account.kind,
21373
+ account.code,
21374
+ account.name,
21375
+ account.person_id,
21376
+ account.is_active,
21377
+ account.account_type,
21378
+ account.bank_name,
21379
+ account.agency_number,
21380
+ account.account_number,
21381
+ account.metadata,
21382
+ coalesce(debits.total, 0)::numeric(14,2) AS debit_total,
21383
+ coalesce(credits.total, 0)::numeric(14,2) AS credit_total,
21384
+ (coalesce(credits.total, 0) - coalesce(debits.total, 0))::numeric(14,2) AS net_credit,
21385
+ CASE
21386
+ WHEN account.kind IN ('bank', 'cash_physical', 'cash_session', 'card_receivable_credit', 'card_receivable_debit')
21387
+ THEN (coalesce(debits.total, 0) - coalesce(credits.total, 0))::numeric(14,2)
21388
+ ELSE (coalesce(credits.total, 0) - coalesce(debits.total, 0))::numeric(14,2)
21389
+ END AS balance,
21390
+ (coalesce(debits.n, 0) + coalesce(credits.n, 0))::integer AS movement_count,
21391
+ account.created_at,
21392
+ account.updated_at
21393
+ FROM public.plg_financial_accounts account
21394
+ LEFT JOIN debits ON debits.account_id = account.id
21395
+ LEFT JOIN credits ON credits.account_id = account.id;
21396
+
21397
+ COMMENT ON VIEW public.v_financial_account_balances IS
21398
+ 'Balances from economic cash events; matched bank evidence never duplicates its app-native payment.';
21399
+
21400
+ GRANT SELECT ON public.v_financial_account_balances TO authenticated, service_role;
21401
+ `;
21274
21402
  var MIGRATIONS = [
21275
21403
  { id: "000_baseline", sql: MIGRATION_000_BASELINE },
21276
21404
  { id: "001_the_comanda_becomes_a_receivable_when_it_closes", sql: MIGRATION_001_THE_COMANDA_BECOMES_A_RECEIVABLE_WHEN_IT_CLOSES },
@@ -21302,7 +21430,8 @@ var MIGRATIONS = [
21302
21430
  { id: "027_o_vale_presente_nasce_em_lote_e_e_um_passivo", sql: MIGRATION_027_O_VALE_PRESENTE_NASCE_EM_LOTE_E_E_UM_PASSIVO },
21303
21431
  { id: "028_o_cartao_tem_cor", sql: MIGRATION_028_O_CARTAO_TEM_COR },
21304
21432
  { id: "029_the_kiosk_sale_is_a_sale_too", sql: MIGRATION_029_THE_KIOSK_SALE_IS_A_SALE_TOO },
21305
- { id: "030_the_census_can_see_the_kiosk", sql: MIGRATION_030_THE_CENSUS_CAN_SEE_THE_KIOSK }
21433
+ { id: "030_the_census_can_see_the_kiosk", sql: MIGRATION_030_THE_CENSUS_CAN_SEE_THE_KIOSK },
21434
+ { id: "031_the_bank_line_is_evidence_not_a_second_payment", sql: MIGRATION_031_THE_BANK_LINE_IS_EVIDENCE_NOT_A_SECOND_PAYMENT }
21306
21435
  ];
21307
21436
  var STANDALONE_CONFIG = {
21308
21437
  currency: { code: "BRL", locale: "pt-BR", symbol: "R$" }
@@ -21587,6 +21716,7 @@ function resolveConfig(options) {
21587
21716
  locations: options?.locations ?? [],
21588
21717
  entityLookups: options?.entityLookups ?? {},
21589
21718
  contactLookup: options?.contactLookup,
21719
+ fiscalProvider: options?.fiscalProvider,
21590
21720
  onBookingClick: options?.onBookingClick,
21591
21721
  navFeatureMap: { ...options?.navFeatureMap }
21592
21722
  };