@fayz-ai/plugin-financial 0.20.0 → 0.21.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/components/CashSessionReviewModal.d.ts.map +1 -1
- package/dist/components/InstallmentRow.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +186 -42
- package/dist/index.js.map +1 -1
- package/dist/lib/routes.d.ts +7 -0
- package/dist/lib/routes.d.ts.map +1 -1
- package/dist/migrations/index.d.ts +1 -0
- package/dist/migrations/index.d.ts.map +1 -1
- package/dist/views/InvoiceDetailView.d.ts.map +1 -1
- package/dist/views/InvoiceFormView.d.ts.map +1 -1
- package/dist/views/InvoiceListView.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CashSessionReviewModal.d.ts","sourceRoot":"","sources":["../../src/components/CashSessionReviewModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAqBlD,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,4HAA4H;IAC5H,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAA;IAC1B,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;CACxB;AAED,wBAAgB,sBAAsB,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,2BAA2B,
|
|
1
|
+
{"version":3,"file":"CashSessionReviewModal.d.ts","sourceRoot":"","sources":["../../src/components/CashSessionReviewModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAqBlD,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,4HAA4H;IAC5H,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAA;IAC1B,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;CACxB;AAED,wBAAgB,sBAAsB,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,2BAA2B,qBA0KtH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InstallmentRow.d.ts","sourceRoot":"","sources":["../../src/components/InstallmentRow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAMzB;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GACrF,EAAE;IACD,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,iDAAiD;IACjD,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB,
|
|
1
|
+
{"version":3,"file":"InstallmentRow.d.ts","sourceRoot":"","sources":["../../src/components/InstallmentRow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAMzB;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GACrF,EAAE;IACD,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,iDAAiD;IACjD,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB,qBAiCA;AAID,mFAAmF;AACnF,wBAAgB,oBAAoB,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAmB,EAAE,EAAE;IAChG,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;CAChC,qBAeA;AAED,kDAAkD;AAClD,wBAAgB,uBAAuB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;IACzE,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,IAAI,EAAE,KAAK,CAAC,WAAW,CAAA;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,qBAOA;AAED,oHAAoH;AACpH,wBAAgB,wBAAwB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;IACrF,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,qBAeA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -154,6 +154,7 @@ export type { FinancialDataProvider } from './data/types';
|
|
|
154
154
|
export type { ResolvedFinancialConfig } from './context';
|
|
155
155
|
export type { GiftCard, GiftCardState, GiftCardQuery, IssueGiftCardsInput, NotaFiscal, NotaFiscalModel, NotaFiscalStatus, NotaFiscalQuery, CreateNotaFiscalInput, } from './types';
|
|
156
156
|
export { createMockFinancialProvider } from './data/mock';
|
|
157
|
+
export { FINANCIAL_INVOICE_ZONES } from './lib/routes';
|
|
157
158
|
export type { MockFinancialSeed, MockFinancialProviderOptions } from './data/mock';
|
|
158
159
|
export { buildFinancialDomainEvents, buildFinancialMessageDefaults } from './lib/message-events';
|
|
159
160
|
export { ReceivePaymentModal } from './components/ReceivePaymentModal';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import * as React25 from 'react';
|
|
2
2
|
import React25__default, { useState, useEffect, useMemo, useRef, useCallback } from 'react';
|
|
3
3
|
import { recordRailFields, RECORD_GROUP, activeFacet, createConnectionStore, connectionSettings, connectionStatus, settingsStatus, connectionRuns, registerTranslations, getSupabaseClientOptional, createSafeDataProvider, registerMessageDefaults, reportDataError, useTranslation, createPendingCommand, useUnitMode, useDataChanged, countByTenant, tl, resolveDataProvider, useActiveUnitId, getActiveTenantId, emitDataChanged, exportCSV } from '@fayz-ai/core';
|
|
4
|
-
import { INLINE_LINK_TONE, SearchSelect, ModalTask, toast, Button, useInModalTaskHost, useSaveBar, tourAnchor, DatePicker, 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, CurrencyInput, Input, PageHeaderActions, ChoiceSelect, Hint, ModalFooter, PageTabs, Tooltip, TooltipTrigger, TooltipContent, Checkbox, Popover, PopoverTrigger, PopoverContent, DashboardCanvas, ComingSoon, StatTiles, ListView, DateRangeControl, FilterPanel, FilterPanelField, SegmentedControl, RequiredFilter, FilterMenuRow, ChoiceList, ModalFlow, Switch, WizardSteps, KpiCard, ChartWidget, CardHeader, CardTitle, TableWidget, useDashboardNavigate, GoldCard } from '@fayz-ai/ui';
|
|
4
|
+
import { INLINE_LINK_TONE, SearchSelect, ModalTask, toast, Button, useInModalTaskHost, useSaveBar, tourAnchor, DatePicker, 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, CurrencyInput, Input, PageHeaderActions, ChoiceSelect, Hint, ModalFooter, PageTabs, Tooltip, TooltipTrigger, TooltipContent, Checkbox, Popover, PopoverTrigger, PopoverContent, openPrintWindow, printDocument, DashboardCanvas, ComingSoon, StatTiles, ListView, DateRangeControl, FilterPanel, FilterPanelField, SegmentedControl, RequiredFilter, FilterMenuRow, ChoiceList, ModalFlow, Switch, WizardSteps, KpiCard, ChartWidget, CardHeader, CardTitle, TableWidget, useDashboardNavigate, GoldCard } from '@fayz-ai/ui';
|
|
5
5
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
6
|
-
import { createPluginContext, fayzConnectorOAuth, formatCurrency, RightRailPage, createCrudPage, PluginSettingsPanel, dedup, useUnitFilter, useLimitGuard, usePermissionOptional, useLookupCreate, OrderFormSkeleton, OrderFormBlock, OrderFormView, OrderFormItemsCard, OrderFormItemRow, adminNavigateTo, OrderFormAddItemStep, useUnitStore, OrderDetailSkeleton, PageActions, OrderDetailBlock, OrderDetailView, PersonLink, useTenantPluginSettings, useModuleNavigation, usePluginOnboardingGate, useModuleNavAccess, PluginOnboardingGateSkeleton, ModuleActionBar, SettingsGroup, ToggleRow, createArchetypeLookup, invalidateLimit, useAgentSurface, parseViewId, EntitlementGate, UpgradePrompt, useChatStore, revealPage, useAuth, GetStarted, resolveEntityRoute, PermissionGate, createOneShotAsk, askAI, requestChatUpload, toInlineFile, shrinkForVision } from '@fayz-ai/admin';
|
|
6
|
+
import { createPluginContext, fayzConnectorOAuth, formatCurrency, RightRailPage, createCrudPage, PluginSettingsPanel, dedup, useUnitFilter, useLimitGuard, usePermissionOptional, useLookupCreate, OrderFormSkeleton, WidgetSlot, OrderFormBlock, OrderFormView, OrderFormItemsCard, OrderFormItemRow, adminNavigateTo, OrderFormAddItemStep, useUnitStore, OrderDetailSkeleton, PageActions, OrderDetailBlock, OrderDetailView, PersonLink, useTenantPluginSettings, useModuleNavigation, usePluginOnboardingGate, useModuleNavAccess, PluginOnboardingGateSkeleton, ModuleActionBar, SettingsGroup, ToggleRow, createArchetypeLookup, invalidateLimit, useAgentSurface, parseViewId, EntitlementGate, UpgradePrompt, useChatStore, revealPage, useAuth, GetStarted, resolveEntityRoute, PermissionGate, createOneShotAsk, askAI, requestChatUpload, toInlineFile, shrinkForVision } from '@fayz-ai/admin';
|
|
7
7
|
import { Landmark, CircleDollarSign, FileText, TriangleAlert, Loader2, Check, X, MoreVertical, Ban, CircleDashed, CircleAlert, CircleCheckBig, CircleEllipsis, Pencil, Receipt, Gift, Briefcase, Package, CalendarDays, ExternalLink, DollarSign, LayoutList, Layers, Paperclip, Ticket, FileCheck, ArrowRightLeft, CreditCard, QrCode, Banknote, Undo2, Wallet, Plus, AlertTriangle, Filter, TrendingUp, Copy, Trash2, Search, ChevronsUpDown, ChevronsDownUp, ChevronRight, Building2, Image, UploadCloud, Calendar, User, Unlink, ChevronDown, Eye, Inbox, Clock, ClipboardCheck, BookOpen, Info, FolderOpen, Folder, RotateCcw, Settings, ArrowLeft, ChevronLeft, Calculator, Square, Play, ChevronUp, Printer, CalendarClock, BadgeCheck, Target, ArrowRight, Users, RefreshCw, Download, Camera, Sparkles, Link2, FileSearch, CheckCheck, Pause, ShoppingCart, Car, Home, Utensils, Zap, Film, HeartPulse, Dumbbell, Music, ShoppingBag, FileDown, ArrowUpRight, ArrowDownRight, EyeOff } from 'lucide-react';
|
|
8
8
|
import { createPortal } from 'react-dom';
|
|
9
9
|
import { createStore as createStore$1 } from 'zustand/vanilla';
|
|
@@ -2489,14 +2489,17 @@ function InvoiceListView({ direction, onNew, onNewReceipt, onEdit }) {
|
|
|
2489
2489
|
const printSelected = useCallback((rows) => {
|
|
2490
2490
|
const safe = (value) => String(value ?? "").replace(/[&<>"']/g, (character) => ({ "&": "&", "<": "<", ">": ">", '"': """, "'": "'" })[character] ?? character);
|
|
2491
2491
|
const body = rows.map((row) => `<tr><td>${safe(row.dueDate)}</td><td>${safe(row.contactName)}<small>${safe(row.itemsSummary)}</small></td><td>${safe(formatCurrency(row.totalAmount, currency))}</td><td>${row.installmentNumber ?? 1}/${row.totalInstallments ?? 1}</td></tr>`).join("");
|
|
2492
|
-
const
|
|
2492
|
+
const title = direction === "debit" ? "Contas a pagar" : "Contas a receber";
|
|
2493
|
+
const popup = printDocument({
|
|
2494
|
+
title,
|
|
2495
|
+
css: "body{font:12px sans-serif}table{width:100%;border-collapse:collapse}th,td{border-bottom:1px solid #ddd;padding:8px;text-align:left}small{display:block;color:#666;margin-top:2px}",
|
|
2496
|
+
body: `<h1>${title}</h1><table><thead><tr><th>Vencimento</th><th>Descri\xE7\xE3o / itens</th><th>Valor</th><th>Parcela</th></tr></thead><tbody>${body}</tbody></table>`
|
|
2497
|
+
});
|
|
2493
2498
|
if (!popup) {
|
|
2494
2499
|
toast.error(t2("financial.invoice.printBlocked"));
|
|
2495
2500
|
return;
|
|
2496
2501
|
}
|
|
2497
2502
|
popup.opener = null;
|
|
2498
|
-
popup.document.write(`<html><head><title>${direction === "debit" ? "Contas a pagar" : "Contas a receber"}</title><style>body{font:12px sans-serif;padding:24px}table{width:100%;border-collapse:collapse}th,td{border-bottom:1px solid #ddd;padding:8px;text-align:left}small{display:block;color:#666;margin-top:2px}</style></head><body><h1>${direction === "debit" ? "Contas a pagar" : "Contas a receber"}</h1><table><thead><tr><th>Vencimento</th><th>Descri\xE7\xE3o / itens</th><th>Valor</th><th>Parcela</th></tr></thead><tbody>${body}</tbody></table><script>window.print();window.close()</script></body></html>`);
|
|
2499
|
-
popup.document.close();
|
|
2500
2503
|
}, [currency, direction, t2]);
|
|
2501
2504
|
const bulkActions = useMemo(() => {
|
|
2502
2505
|
const actions = [
|
|
@@ -2885,6 +2888,9 @@ function InvoiceListView({ direction, onNew, onNewReceipt, onEdit }) {
|
|
|
2885
2888
|
var ACCOUNTS_ROUTE = "/registry/accounts";
|
|
2886
2889
|
var CHART_OF_ACCOUNTS_ROUTE = "/settings/financial/chart-of-accounts";
|
|
2887
2890
|
var COST_CENTERS_ROUTE = "/settings/financial/cost-centers";
|
|
2891
|
+
var FINANCIAL_INVOICE_ZONES = {
|
|
2892
|
+
headerActions: "financial.invoice.header.actions"
|
|
2893
|
+
};
|
|
2888
2894
|
function useWritableUnits(fallback = []) {
|
|
2889
2895
|
const unitMode = useUnitMode();
|
|
2890
2896
|
const activeUnitId = useActiveUnitId() ?? void 0;
|
|
@@ -4899,7 +4905,8 @@ function InstallmentRow({
|
|
|
4899
4905
|
] })
|
|
4900
4906
|
] }),
|
|
4901
4907
|
/* @__PURE__ */ jsx("div", { className: "w-44 shrink-0", onClick: stop, children: source }),
|
|
4902
|
-
(actions || onClick) &&
|
|
4908
|
+
(actions || onClick) && // Min width fits attach + "Pagar": rows where Pay is absent (unsaved, paid) keep the source column aligned.
|
|
4909
|
+
/* @__PURE__ */ jsxs("div", { className: "flex min-w-32 shrink-0 items-center justify-end gap-1.5", onClick: stop, children: [
|
|
4903
4910
|
actions,
|
|
4904
4911
|
onClick && /* @__PURE__ */ jsx(ChevronRight, { className: "h-3.5 w-3.5 shrink-0 text-muted-foreground", "aria-hidden": true })
|
|
4905
4912
|
] })
|
|
@@ -5110,18 +5117,18 @@ function InvoiceFormView({ direction, editId, onSaved, focusReceipt = false, fro
|
|
|
5110
5117
|
const showUnitField = unitMode ? reachableUnits.length > 1 : unitChoices.length > 1;
|
|
5111
5118
|
const [giftCardsEnabled, setGiftCardsEnabled] = useState(false);
|
|
5112
5119
|
useEffect(() => {
|
|
5113
|
-
let
|
|
5120
|
+
let cancelled2 = false;
|
|
5114
5121
|
if (direction !== "credit" || !provider.giftCardsEnabled) {
|
|
5115
5122
|
setGiftCardsEnabled(false);
|
|
5116
5123
|
return;
|
|
5117
5124
|
}
|
|
5118
5125
|
void provider.giftCardsEnabled().then((enabled) => {
|
|
5119
|
-
if (!
|
|
5126
|
+
if (!cancelled2) setGiftCardsEnabled(enabled);
|
|
5120
5127
|
}).catch(() => {
|
|
5121
|
-
if (!
|
|
5128
|
+
if (!cancelled2) setGiftCardsEnabled(false);
|
|
5122
5129
|
});
|
|
5123
5130
|
return () => {
|
|
5124
|
-
|
|
5131
|
+
cancelled2 = true;
|
|
5125
5132
|
};
|
|
5126
5133
|
}, [direction, provider]);
|
|
5127
5134
|
const giftCardLookup = useMemo(() => {
|
|
@@ -5198,15 +5205,15 @@ function InvoiceFormView({ direction, editId, onSaved, focusReceipt = false, fro
|
|
|
5198
5205
|
void fetchPaymentMethods();
|
|
5199
5206
|
}, []);
|
|
5200
5207
|
useEffect(() => {
|
|
5201
|
-
let
|
|
5208
|
+
let cancelled2 = false;
|
|
5202
5209
|
void Promise.all([provider.getChartOfAccounts(), provider.getCostCenters()]).then(([accountRows, costCenterRows]) => {
|
|
5203
|
-
if (
|
|
5210
|
+
if (cancelled2) return;
|
|
5204
5211
|
setAccounts(accountRows);
|
|
5205
5212
|
setCostCenters(costCenterRows);
|
|
5206
5213
|
}).catch(() => {
|
|
5207
5214
|
});
|
|
5208
5215
|
return () => {
|
|
5209
|
-
|
|
5216
|
+
cancelled2 = true;
|
|
5210
5217
|
};
|
|
5211
5218
|
}, [provider]);
|
|
5212
5219
|
const contactLookup = useMemo(
|
|
@@ -5252,6 +5259,8 @@ function InvoiceFormView({ direction, editId, onSaved, focusReceipt = false, fro
|
|
|
5252
5259
|
const [expandedItemId, setExpandedItemId] = useState(null);
|
|
5253
5260
|
const [addingItem, setAddingItem] = useState(false);
|
|
5254
5261
|
const [installments, setInstallments] = useState([]);
|
|
5262
|
+
const [cancelled, setCancelled] = useState(false);
|
|
5263
|
+
const [savedTotal, setSavedTotal] = useState(null);
|
|
5255
5264
|
const [savedMovements, setSavedMovements] = useState([]);
|
|
5256
5265
|
const [payingMovement, setPayingMovement] = useState(null);
|
|
5257
5266
|
const [pendingReceipt, setPendingReceipt] = useState();
|
|
@@ -5333,6 +5342,8 @@ function InvoiceFormView({ direction, editId, onSaved, focusReceipt = false, fro
|
|
|
5333
5342
|
setInvoiceDate(invoice.invoiceDate);
|
|
5334
5343
|
setSavedInvoiceDate(invoice.invoiceDate);
|
|
5335
5344
|
setSavedContactId(invoice.contactId);
|
|
5345
|
+
setCancelled(invoice.status === "cancelled");
|
|
5346
|
+
setSavedTotal(invoice.totalAmount);
|
|
5336
5347
|
setFiscalNumber(String(invoice.metadata?.fiscalNumber ?? ""));
|
|
5337
5348
|
setObservations(invoice.observations ?? "");
|
|
5338
5349
|
const invoiceItems = await provider.getInvoiceItems(editId);
|
|
@@ -5380,7 +5391,7 @@ function InvoiceFormView({ direction, editId, onSaved, focusReceipt = false, fro
|
|
|
5380
5391
|
return sum + it.quantity * it.unitPrice - (it.discount ?? 0) + (it.surcharge ?? 0);
|
|
5381
5392
|
}, 0);
|
|
5382
5393
|
const itemsDirty = isEdit && loaded && itemsKey(items) !== savedItemsKey;
|
|
5383
|
-
const scheduleTotal = isEdit && savedMovements.length > 0 && !itemsDirty ? Math.round(savedMovements.reduce((sum, m) => sum + m.amount, 0) * 100) / 100 : totalAmount;
|
|
5394
|
+
const scheduleTotal = isEdit && savedMovements.length > 0 && !itemsDirty ? savedTotal ?? Math.round(savedMovements.reduce((sum, m) => sum + m.amount, 0) * 100) / 100 : totalAmount;
|
|
5384
5395
|
const prevItemCount = useRef(items.length);
|
|
5385
5396
|
useEffect(() => {
|
|
5386
5397
|
if (items.length > 0 && prevItemCount.current === 0 && installments.length === 0 && !isEdit) {
|
|
@@ -5608,6 +5619,7 @@ function InvoiceFormView({ direction, editId, onSaved, focusReceipt = false, fro
|
|
|
5608
5619
|
if (isEdit && editId) {
|
|
5609
5620
|
if (canEditItems && provider.replaceInvoiceItems && itemsDirty) {
|
|
5610
5621
|
await provider.replaceInvoiceItems(editId, items.map(({ _id, ...rest }) => rest));
|
|
5622
|
+
setSavedTotal(Math.round(totalAmount * 100) / 100);
|
|
5611
5623
|
}
|
|
5612
5624
|
await provider.updateInvoice(editId, {
|
|
5613
5625
|
unitId: unitId || void 0,
|
|
@@ -5747,23 +5759,26 @@ function InvoiceFormView({ direction, editId, onSaved, focusReceipt = false, fro
|
|
|
5747
5759
|
const subtitle = isEdit ? t2("financial.invoiceForm.editing") : t2("financial.invoiceForm.creating");
|
|
5748
5760
|
if (loading) return /* @__PURE__ */ jsx(OrderFormSkeleton, { parentLabel: embedded ? void 0 : direction === "debit" ? t2("financial.nav.payables") : t2("financial.nav.receivables"), onBack: embedded ? void 0 : () => onSaved?.() });
|
|
5749
5761
|
const money4 = (v) => formatCurrency(v, currency);
|
|
5750
|
-
const actions = isEdit ? /* @__PURE__ */ jsxs("div", { className: "
|
|
5751
|
-
/* @__PURE__ */ jsx(
|
|
5752
|
-
|
|
5753
|
-
"
|
|
5754
|
-
{
|
|
5755
|
-
|
|
5756
|
-
|
|
5757
|
-
|
|
5758
|
-
|
|
5759
|
-
|
|
5760
|
-
|
|
5761
|
-
|
|
5762
|
-
|
|
5763
|
-
|
|
5764
|
-
|
|
5765
|
-
|
|
5766
|
-
|
|
5762
|
+
const actions = isEdit ? /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
5763
|
+
/* @__PURE__ */ jsx(WidgetSlot, { zone: FINANCIAL_INVOICE_ZONES.headerActions, invoiceId: editId, direction, cancelled }),
|
|
5764
|
+
/* @__PURE__ */ jsxs("div", { className: "relative", ref: menuRef, children: [
|
|
5765
|
+
/* @__PURE__ */ jsx(Button, { variant: "outline", size: "icon", onClick: () => setMenuOpen(!menuOpen), "aria-label": "More actions", children: /* @__PURE__ */ jsx(MoreVertical, { className: "h-4 w-4" }) }),
|
|
5766
|
+
menuOpen && /* @__PURE__ */ jsx("div", { className: "fayz-glass-surface absolute right-0 top-full z-20 mt-1 w-44 rounded-lg border bg-popover py-1 shadow-md", style: { animation: "field-slide-in 150ms ease-out" }, children: /* @__PURE__ */ jsxs(
|
|
5767
|
+
"button",
|
|
5768
|
+
{
|
|
5769
|
+
onClick: () => {
|
|
5770
|
+
setConfirmCancel(true);
|
|
5771
|
+
setMenuOpen(false);
|
|
5772
|
+
},
|
|
5773
|
+
className: "flex w-full items-center gap-2 px-3 py-2 text-xs text-destructive transition-colors hover:bg-destructive/10",
|
|
5774
|
+
children: [
|
|
5775
|
+
/* @__PURE__ */ jsx(Ban, { className: "h-3.5 w-3.5" }),
|
|
5776
|
+
" ",
|
|
5777
|
+
t2("financial.invoiceForm.cancelInvoice")
|
|
5778
|
+
]
|
|
5779
|
+
}
|
|
5780
|
+
) })
|
|
5781
|
+
] })
|
|
5767
5782
|
] }) : null;
|
|
5768
5783
|
const paidSoFar = savedMovements.reduce((sum, m) => sum + (m.paidAmount ?? 0), 0);
|
|
5769
5784
|
const hasPayments = paidSoFar > 0;
|
|
@@ -6646,11 +6661,8 @@ function InvoiceDetailView({ invoiceId, direction, onBack, onEdit, backLabel, em
|
|
|
6646
6661
|
...totalRemaining > 0 ? [{ label: t2("financial.invoice.balance"), value: formatCurrency(totalRemaining, currency) }] : []
|
|
6647
6662
|
];
|
|
6648
6663
|
direction === "debit" ? t2("financial.invoice.accountsPayable") : t2("financial.invoice.accountsReceivable");
|
|
6649
|
-
const actions = (
|
|
6650
|
-
|
|
6651
|
-
// This was an outline button beside a hand-rolled popup — its own useRef
|
|
6652
|
-
// outside-click listener and an inline `style={{animation}}` — sitting next
|
|
6653
|
-
// to a Radix Dropdown that already exists.
|
|
6664
|
+
const actions = /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
6665
|
+
/* @__PURE__ */ jsx(WidgetSlot, { zone: FINANCIAL_INVOICE_ZONES.headerActions, invoiceId: invoice.id, direction, cancelled }),
|
|
6654
6666
|
/* @__PURE__ */ jsx(
|
|
6655
6667
|
PageActions,
|
|
6656
6668
|
{
|
|
@@ -6660,7 +6672,7 @@ function InvoiceDetailView({ invoiceId, direction, onBack, onEdit, backLabel, em
|
|
|
6660
6672
|
] : []
|
|
6661
6673
|
}
|
|
6662
6674
|
)
|
|
6663
|
-
);
|
|
6675
|
+
] });
|
|
6664
6676
|
const sideBlocks = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
6665
6677
|
invoice.bookingStartsAt && /* @__PURE__ */ jsx(OrderDetailBlock, { title: t2("financial.invoice.booking"), children: /* @__PURE__ */ jsxs(
|
|
6666
6678
|
"button",
|
|
@@ -7115,12 +7127,16 @@ function CashSessionReviewModal({ sessionId, open, onOpenChange, mode, onReviewe
|
|
|
7115
7127
|
}
|
|
7116
7128
|
function handlePrint() {
|
|
7117
7129
|
if (!session) return;
|
|
7118
|
-
const popup =
|
|
7130
|
+
const popup = openPrintWindow("width=720,height=900");
|
|
7119
7131
|
if (!popup) return;
|
|
7120
7132
|
const title = session.bankAccountName ?? t2("financial.cash.title");
|
|
7121
7133
|
const rows = (movements ?? []).map((m) => `<tr><td>${m.paymentDate ? new Date(m.paymentDate).toLocaleString() : "\u2014"}</td><td>${m.method ? t2(`financial.method.${m.method}`) : "\u2014"}</td><td style="text-align:right">${m.direction === "credit" ? "+" : "-"}${formatCurrency(m.paidAmount, currency)}</td></tr>`).join("");
|
|
7122
|
-
|
|
7123
|
-
|
|
7134
|
+
printDocument({
|
|
7135
|
+
title,
|
|
7136
|
+
css: "body{font:12px sans-serif}table{width:100%;border-collapse:collapse;margin-top:16px}th,td{border-bottom:1px solid #ddd;padding:8px;text-align:left}h1{font-size:16px;margin-bottom:8px}p{margin:2px 0}",
|
|
7137
|
+
body: `<h1>${title}</h1><p>${t2("financial.cash.opened")}: ${new Date(session.openedAt).toLocaleString()}${session.openedByName ? ` ${t2("financial.cash.by")} ${session.openedByName}` : ""}</p>` + (session.closedAt ? `<p>${t2("financial.cash.closeLabel")}: ${new Date(session.closedAt).toLocaleString()}${session.closedByName ? ` ${t2("financial.cash.by")} ${session.closedByName}` : ""}</p>` : "") + `<p>${t2("financial.cash.openingBalance")}: ${formatCurrency(session.openingBalance, currency)}</p><p>${t2("financial.cash.finalValue")}: ${formatCurrency(session.closingBalance ?? 0, currency)}</p><p>${t2("financial.cash.difference")}: ${(session.difference ?? 0) >= 0 ? "+" : ""}${formatCurrency(session.difference ?? 0, currency)}</p><table><thead><tr><th>${t2("financial.cash.opened")}</th><th>${t2("financial.cash.method")}</th><th style="text-align:right">${t2("financial.cash.finalValue")}</th></tr></thead><tbody>${rows}</tbody></table>`,
|
|
7138
|
+
target: popup
|
|
7139
|
+
});
|
|
7124
7140
|
}
|
|
7125
7141
|
return /* @__PURE__ */ jsx(Modal, { open, onOpenChange, children: /* @__PURE__ */ jsxs(ModalContent, { size: "lg", noPadding: true, className: "gap-0", children: [
|
|
7126
7142
|
/* @__PURE__ */ jsxs(ModalHeader, { className: "border-b px-4 py-3", children: [
|
|
@@ -45131,6 +45147,133 @@ REVOKE ALL ON FUNCTION public.financial_gift_card_by_code(text) FROM anon;
|
|
|
45131
45147
|
GRANT EXECUTE ON FUNCTION public.financial_gift_card_by_code(text) TO authenticated;
|
|
45132
45148
|
GRANT EXECUTE ON FUNCTION public.financial_gift_card_by_code(text) TO service_role;
|
|
45133
45149
|
`;
|
|
45150
|
+
var MIGRATION_119_AN_UNPAID_LEGACY_BILL_CAN_BE_RESCHEDULED = `-- An unpaid bill migrated from V1 could not be rescheduled.
|
|
45151
|
+
--
|
|
45152
|
+
-- Editing the lines of such a bill saved the new lines and total, then
|
|
45153
|
+
-- \`financial_reschedule_invoice\` refused with "carries legacy bill movements":
|
|
45154
|
+
-- the installment kept the old amount and every later save failed the same way.
|
|
45155
|
+
--
|
|
45156
|
+
-- The \`bill\` mirror in plg_financial_movements has had no reader since 044 \u2014
|
|
45157
|
+
-- the installment is the obligation. Its amount is append-only, its status is
|
|
45158
|
+
-- not, so an unpaid mirror is cancelled (stamped in metadata) and the schedule
|
|
45159
|
+
-- goes through. A mirror that records a payment still blocks.
|
|
45160
|
+
--
|
|
45161
|
+
-- Idempotent: replaces the function.
|
|
45162
|
+
|
|
45163
|
+
CREATE OR REPLACE FUNCTION public.financial_reschedule_invoice(
|
|
45164
|
+
p_invoice_id uuid,
|
|
45165
|
+
p_installments jsonb,
|
|
45166
|
+
p_idempotency_key text DEFAULT NULL::text
|
|
45167
|
+
)
|
|
45168
|
+
RETURNS jsonb
|
|
45169
|
+
LANGUAGE plpgsql
|
|
45170
|
+
SECURITY DEFINER
|
|
45171
|
+
SET search_path TO ''
|
|
45172
|
+
AS $function$
|
|
45173
|
+
DECLARE
|
|
45174
|
+
v_tenant uuid := public.plg_financial_require_tenant();
|
|
45175
|
+
v_invoice public.plg_financial_invoices%ROWTYPE;
|
|
45176
|
+
v_paid numeric;
|
|
45177
|
+
v_mirror int;
|
|
45178
|
+
v_sum numeric := 0;
|
|
45179
|
+
v_i jsonb;
|
|
45180
|
+
v_n int := 0;
|
|
45181
|
+
v_out jsonb := '[]'::jsonb;
|
|
45182
|
+
v_inst_id uuid;
|
|
45183
|
+
v_due date;
|
|
45184
|
+
v_amount numeric;
|
|
45185
|
+
v_meta jsonb;
|
|
45186
|
+
v_total int;
|
|
45187
|
+
BEGIN
|
|
45188
|
+
SELECT * INTO v_invoice FROM public.plg_financial_invoices WHERE id = p_invoice_id AND tenant_id = v_tenant;
|
|
45189
|
+
IF NOT FOUND THEN
|
|
45190
|
+
RAISE EXCEPTION 'financial_reschedule_invoice: invoice % not found', p_invoice_id USING ERRCODE = 'P0002';
|
|
45191
|
+
END IF;
|
|
45192
|
+
PERFORM public.plg_financial_require_permission('financial.edit', v_invoice.unit_id);
|
|
45193
|
+
PERFORM public.plg_financial_claim_idempotency(v_tenant, p_idempotency_key);
|
|
45194
|
+
|
|
45195
|
+
IF v_invoice.cancelled_at IS NOT NULL THEN
|
|
45196
|
+
RAISE EXCEPTION 'financial_reschedule_invoice: invoice % is cancelled', v_invoice.number USING ERRCODE = '55000';
|
|
45197
|
+
END IF;
|
|
45198
|
+
|
|
45199
|
+
SELECT coalesce(sum(b.paid), 0) INTO v_paid
|
|
45200
|
+
FROM public.v_financial_installment_balances b WHERE b.invoice_id = p_invoice_id;
|
|
45201
|
+
IF v_paid > 0 THEN
|
|
45202
|
+
RAISE EXCEPTION 'financial_reschedule_invoice: invoice % has % already received; its schedule is history now', v_invoice.number, v_paid
|
|
45203
|
+
USING ERRCODE = '55000',
|
|
45204
|
+
HINT = 'Move the due date of an unpaid installment instead, or cancel and reissue.';
|
|
45205
|
+
END IF;
|
|
45206
|
+
|
|
45207
|
+
-- The legacy \`bill\` mirror can't change amount, but nothing reads it any more
|
|
45208
|
+
-- (the installment is the obligation since 044) and its status may move.
|
|
45209
|
+
-- Retire it unless it records a payment the installments don't know about.
|
|
45210
|
+
SELECT count(*) INTO v_mirror FROM public.plg_financial_movements m
|
|
45211
|
+
WHERE m.financial_invoice_id = p_invoice_id AND m.movement_kind = 'bill'
|
|
45212
|
+
AND m.status <> 'cancelled' AND coalesce(m.paid_amount, 0) > 0;
|
|
45213
|
+
IF v_mirror > 0 THEN
|
|
45214
|
+
RAISE EXCEPTION 'financial_reschedule_invoice: invoice % carries a paid legacy bill movement and cannot be rescheduled', v_invoice.number
|
|
45215
|
+
USING ERRCODE = '55000',
|
|
45216
|
+
HINT = 'Cancel and reissue this invoice.';
|
|
45217
|
+
END IF;
|
|
45218
|
+
UPDATE public.plg_financial_movements m
|
|
45219
|
+
SET status = 'cancelled', updated_at = now(),
|
|
45220
|
+
metadata = coalesce(m.metadata, '{}'::jsonb)
|
|
45221
|
+
|| jsonb_build_object('retired_by', 'financial_reschedule_invoice', 'retired_at', now())
|
|
45222
|
+
WHERE m.financial_invoice_id = p_invoice_id AND m.movement_kind = 'bill' AND m.status <> 'cancelled';
|
|
45223
|
+
|
|
45224
|
+
IF jsonb_typeof(p_installments) <> 'array' OR jsonb_array_length(p_installments) = 0 THEN
|
|
45225
|
+
RAISE EXCEPTION 'financial_reschedule_invoice: installments must be a non-empty array' USING ERRCODE = '22023';
|
|
45226
|
+
END IF;
|
|
45227
|
+
FOR v_i IN SELECT * FROM jsonb_array_elements(p_installments) LOOP
|
|
45228
|
+
v_sum := v_sum + round(coalesce((v_i ->> 'amount')::numeric, 0), 2);
|
|
45229
|
+
END LOOP;
|
|
45230
|
+
IF v_sum <> round(v_invoice.total, 2) THEN
|
|
45231
|
+
RAISE EXCEPTION 'financial_reschedule_invoice: installments sum to % but the invoice total is %', v_sum, v_invoice.total
|
|
45232
|
+
USING ERRCODE = '23514';
|
|
45233
|
+
END IF;
|
|
45234
|
+
|
|
45235
|
+
v_total := jsonb_array_length(p_installments);
|
|
45236
|
+
|
|
45237
|
+
-- 1. A sobra sai PRIMEIRO. Se ela tiver movimento, o banco recusa aqui \u2014 e \xE9
|
|
45238
|
+
-- a recusa certa: encolher o cronograma apagaria a linha que um
|
|
45239
|
+
-- lan\xE7amento aponta.
|
|
45240
|
+
DELETE FROM public.plg_financial_invoice_installments
|
|
45241
|
+
WHERE invoice_id = p_invoice_id AND number > v_total;
|
|
45242
|
+
|
|
45243
|
+
-- 2. E a parcela de n\xFAmero N continua sendo a de n\xFAmero N.
|
|
45244
|
+
FOR v_i IN SELECT * FROM jsonb_array_elements(p_installments) LOOP
|
|
45245
|
+
v_n := v_n + 1;
|
|
45246
|
+
v_due := coalesce((v_i ->> 'due_date')::date, v_invoice.competence_date, current_date);
|
|
45247
|
+
v_amount := round(coalesce((v_i ->> 'amount')::numeric, 0), 2);
|
|
45248
|
+
v_meta := CASE WHEN jsonb_typeof(v_i -> 'metadata') = 'object' THEN v_i -> 'metadata' ELSE NULL END;
|
|
45249
|
+
|
|
45250
|
+
UPDATE public.plg_financial_invoice_installments
|
|
45251
|
+
SET due_date = v_due,
|
|
45252
|
+
amount = v_amount,
|
|
45253
|
+
metadata = coalesce(v_meta, metadata),
|
|
45254
|
+
updated_at = now()
|
|
45255
|
+
WHERE invoice_id = p_invoice_id AND number = v_n
|
|
45256
|
+
RETURNING id INTO v_inst_id;
|
|
45257
|
+
|
|
45258
|
+
IF v_inst_id IS NULL THEN
|
|
45259
|
+
INSERT INTO public.plg_financial_invoice_installments
|
|
45260
|
+
(tenant_id, unit_id, invoice_id, number, due_date, amount, metadata)
|
|
45261
|
+
VALUES (v_tenant, v_invoice.unit_id, p_invoice_id, v_n, v_due, v_amount, coalesce(v_meta, '{}'::jsonb))
|
|
45262
|
+
RETURNING id INTO v_inst_id;
|
|
45263
|
+
END IF;
|
|
45264
|
+
|
|
45265
|
+
v_out := v_out || jsonb_build_object('id', v_inst_id, 'number', v_n, 'due_date', v_due, 'amount', v_amount);
|
|
45266
|
+
END LOOP;
|
|
45267
|
+
|
|
45268
|
+
PERFORM public.plg_financial_audit(v_tenant, 'financial.invoice.reschedule', 'plg_financial_invoices', p_invoice_id::text,
|
|
45269
|
+
jsonb_build_object('number', v_invoice.number, 'installments', v_n, 'idempotency_key', p_idempotency_key));
|
|
45270
|
+
|
|
45271
|
+
RETURN jsonb_build_object('invoice_id', p_invoice_id, 'installments', v_out);
|
|
45272
|
+
END $function$;
|
|
45273
|
+
|
|
45274
|
+
COMMENT ON FUNCTION public.financial_reschedule_invoice(uuid, jsonb, text) IS
|
|
45275
|
+
'Rewrites the schedule by UPDATING each numbered installment in place, and retires an unpaid legacy bill mirror instead of refusing (119).';
|
|
45276
|
+
`;
|
|
45134
45277
|
var MIGRATIONS = [
|
|
45135
45278
|
{ id: "000_baseline", sql: MIGRATION_000_BASELINE },
|
|
45136
45279
|
{ id: "001_the_comanda_becomes_a_receivable_when_it_closes", sql: MIGRATION_001_THE_COMANDA_BECOMES_A_RECEIVABLE_WHEN_IT_CLOSES },
|
|
@@ -45250,7 +45393,8 @@ var MIGRATIONS = [
|
|
|
45250
45393
|
{ id: "115_a_remessa_aponta_para_a_conta_que_existe", sql: MIGRATION_115_A_REMESSA_APONTA_PARA_A_CONTA_QUE_EXISTE },
|
|
45251
45394
|
{ id: "116_um_estorno_nao_se_estorna", sql: MIGRATION_116_UM_ESTORNO_NAO_SE_ESTORNA },
|
|
45252
45395
|
{ id: "117_copying_lines_is_an_internal_step", sql: MIGRATION_117_COPYING_LINES_IS_AN_INTERNAL_STEP },
|
|
45253
|
-
{ id: "118_gift_card_found_by_exact_code", sql: MIGRATION_118_GIFT_CARD_FOUND_BY_EXACT_CODE }
|
|
45396
|
+
{ id: "118_gift_card_found_by_exact_code", sql: MIGRATION_118_GIFT_CARD_FOUND_BY_EXACT_CODE },
|
|
45397
|
+
{ id: "119_an_unpaid_legacy_bill_can_be_rescheduled", sql: MIGRATION_119_AN_UNPAID_LEGACY_BILL_CAN_BE_RESCHEDULED }
|
|
45254
45398
|
];
|
|
45255
45399
|
var STANDALONE_CONFIG = resolveConfig();
|
|
45256
45400
|
registerTranslations(financialLocales);
|
|
@@ -46037,6 +46181,6 @@ function createFinancialPlugin(options) {
|
|
|
46037
46181
|
};
|
|
46038
46182
|
}
|
|
46039
46183
|
|
|
46040
|
-
export { ClientAccountInline, ClientAccountModal, ClientAccountPanel, FINANCIAL_NAV_FEATURES, ReceivePaymentModal, buildFinancialDomainEvents, buildFinancialMessageDefaults, createFinancialPlugin, createFinancialSettingsPlugin, createMockFinancialProvider, createSafeFinancialProvider };
|
|
46184
|
+
export { ClientAccountInline, ClientAccountModal, ClientAccountPanel, FINANCIAL_INVOICE_ZONES, FINANCIAL_NAV_FEATURES, ReceivePaymentModal, buildFinancialDomainEvents, buildFinancialMessageDefaults, createFinancialPlugin, createFinancialSettingsPlugin, createMockFinancialProvider, createSafeFinancialProvider };
|
|
46041
46185
|
//# sourceMappingURL=index.js.map
|
|
46042
46186
|
//# sourceMappingURL=index.js.map
|