@fayz-ai/plugin-financial 0.8.3 → 0.8.4
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/FinancialContext.d.ts +2 -0
- package/dist/FinancialContext.d.ts.map +1 -1
- package/dist/FinancialPage.d.ts.map +1 -1
- package/dist/data/mock.d.ts.map +1 -1
- package/dist/data/supabase.d.ts.map +1 -1
- package/dist/data/tables.d.ts +1 -0
- package/dist/data/tables.d.ts.map +1 -1
- package/dist/data/types.d.ts +8 -1
- package/dist/data/types.d.ts.map +1 -1
- package/dist/index.cjs +494 -188
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +323 -17
- package/dist/index.js.map +1 -1
- package/dist/locales/en.d.ts.map +1 -1
- package/dist/locales/pt-BR.d.ts.map +1 -1
- package/dist/migrations/index.d.ts +1 -0
- package/dist/migrations/index.d.ts.map +1 -1
- package/dist/types.d.ts +49 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/views/InvoiceDetailView.d.ts.map +1 -1
- package/dist/views/NotasFiscaisView.d.ts +3 -0
- package/dist/views/NotasFiscaisView.d.ts.map +1 -0
- package/package.json +4 -4
- package/src/FinancialContext.tsx +2 -0
- package/src/FinancialPage.tsx +14 -0
- package/src/data/mock.ts +69 -0
- package/src/data/supabase.ts +79 -0
- package/src/data/tables.ts +1 -0
- package/src/data/types.ts +13 -0
- package/src/index.ts +6 -0
- package/src/locales/en.ts +1 -0
- package/src/locales/pt-BR.ts +1 -0
- package/src/migrations/011_nfe.sql +58 -0
- package/src/migrations/index.ts +62 -1
- package/src/types.ts +63 -0
- package/src/views/InvoiceDetailView.tsx +3 -1
- package/src/views/NotasFiscaisView.tsx +209 -0
package/dist/locales/en.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../src/locales/en.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../src/locales/en.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA2erC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pt-BR.d.ts","sourceRoot":"","sources":["../../src/locales/pt-BR.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"pt-BR.d.ts","sourceRoot":"","sources":["../../src/locales/pt-BR.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA2evC,CAAA"}
|
|
@@ -11,6 +11,7 @@ export declare const MIGRATION_007B_MOVEMENT_PAYMENT_METHOD_TYPE = "-- payment_m
|
|
|
11
11
|
export declare const MIGRATION_008_SPLIT_PAYMENT_MOVEMENTS = "-- Split bill (obligation) vs payment (cash event).\n-- Each payment is now its own movement_kind='payment' row (one per cash event), so\n-- two payments on one installment show as two extract rows instead of one summed row.\n-- Bills stay pure obligations; v_invoice_balances already filters movement_kind='bill',\n-- so the new payment rows don't affect invoice balances. Backfill is idempotent.\n-- Requires fee_amount (006b_extract_fee_amount.sql).\n\nINSERT INTO public.plg_financial_movements\n (tenant_id, invoice_id, direction, movement_kind, amount, paid_amount, fee_amount, status,\n due_date, payment_date, installment_number, payment_method_id, payment_method_type_id,\n bank_account_id, cash_session_id, card_brand, card_installments, notes, metadata)\nSELECT\n b.tenant_id, b.invoice_id, b.direction, 'payment', b.paid_amount, b.paid_amount,\n COALESCE(b.fee_amount, 0), 'paid',\n b.due_date, COALESCE(b.payment_date, b.updated_at::date, CURRENT_DATE), b.installment_number,\n b.payment_method_id, b.payment_method_type_id, b.bank_account_id, b.cash_session_id,\n b.card_brand, b.card_installments, b.notes,\n jsonb_build_object('backfilledFromBill', b.id)\nFROM public.plg_financial_movements b\nWHERE b.movement_kind = 'bill' AND b.paid_amount > 0\n AND NOT EXISTS (\n SELECT 1 FROM public.plg_financial_movements p\n WHERE p.movement_kind = 'payment' AND p.metadata->>'backfilledFromBill' = b.id::text\n );\n\nUPDATE public.plg_financial_movements\nSET payment_date = NULL, bank_account_id = NULL, payment_method_id = NULL,\n payment_method_type_id = NULL, cash_session_id = NULL, card_brand = NULL, card_installments = NULL\nWHERE movement_kind = 'bill';\n";
|
|
12
12
|
export declare const MIGRATION_009_AGENT_RPCS = "-- ============================================================================\n-- plugin-financial 009: server-plane agent write RPC.\n--\n-- public.agent_financial_mark_payment_received \u2014 \"marca o atendimento como\n-- pago em cart\u00E3o 2x\". Resolves the order (directly or via a booking id),\n-- guard-checks the actor (agent_guard, spine 015), promotes the order into an\n-- invoice + installment ledger through the EXISTING invariant function\n-- fn_invoice_from_order (004) \u2014 never re-implementing its numbering/allocation\n-- logic \u2014 then settles the installments following 008's split model (bill rows\n-- flip to paid; each cash event is its own movement_kind='payment' row).\n--\n-- fn_invoice_from_order authorizes via user_tenant_ids() (auth.uid()). This\n-- RPC runs under the broker's service key, so it impersonates the ALREADY\n-- GUARD-VERIFIED actor for the duration of the transaction by setting\n-- request.jwt.claims locally \u2014 the invariant function keeps working unchanged\n-- and the audit trail carries the real acting user.\n--\n-- Contract: (p_tenant_id, p_actor_user_id, p_payload) \u2192 jsonb\n-- payload {order_id? uuid, booking_id? uuid, method text\n-- ('cash'|'pix'|'credit_card'|'debit_card'|'transfer'),\n-- installments? int (credit_card only, 1\u201312), amount? numeric}\n-- ============================================================================\n\nCREATE OR REPLACE FUNCTION public.agent_financial_mark_payment_received(\n p_tenant_id uuid,\n p_actor_user_id uuid,\n p_payload jsonb\n) RETURNS jsonb\nLANGUAGE plpgsql SECURITY DEFINER\nSET search_path = public\nAS $$\nDECLARE\n v_denial jsonb;\n v_order_id uuid;\n v_booking_id uuid;\n v_method text;\n v_installments int;\n v_amount numeric;\n v_order record;\n v_bill record;\n v_paid_count int := 0;\n v_total_paid numeric := 0;\nBEGIN\n -- \u2500\u2500 payload \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n BEGIN\n v_order_id := (p_payload->>'order_id')::uuid;\n v_booking_id := (p_payload->>'booking_id')::uuid;\n v_amount := (p_payload->>'amount')::numeric;\n v_installments := COALESCE((p_payload->>'installments')::int, 1);\n EXCEPTION WHEN OTHERS THEN\n RETURN jsonb_build_object('ok', false, 'error', 'invalid payload: ' || SQLERRM);\n END;\n v_method := lower(COALESCE(p_payload->>'method', 'cash'));\n IF v_method NOT IN ('cash', 'pix', 'credit_card', 'debit_card', 'transfer') THEN\n RETURN jsonb_build_object('ok', false, 'error', 'unknown payment method');\n END IF;\n IF v_installments NOT BETWEEN 1 AND 12\n OR (v_installments > 1 AND v_method <> 'credit_card') THEN\n RETURN jsonb_build_object('ok', false, 'error', 'installments require credit_card (1-12)');\n END IF;\n\n -- booking \u2192 order\n IF v_order_id IS NULL AND v_booking_id IS NOT NULL THEN\n SELECT b.order_id INTO v_order_id\n FROM appointments b\n WHERE b.id = v_booking_id AND b.tenant_id = p_tenant_id;\n END IF;\n IF v_order_id IS NULL THEN\n RETURN jsonb_build_object('ok', false, 'error', 'order_id or booking_id required (booking must have an order)');\n END IF;\n\n SELECT o.id, o.status, o.total INTO v_order\n FROM orders o\n WHERE o.id = v_order_id AND o.tenant_id = p_tenant_id;\n IF NOT FOUND THEN\n RETURN jsonb_build_object('ok', false, 'error', 'unknown order for this tenant');\n END IF;\n IF v_order.status = 'cancelled' THEN\n RETURN jsonb_build_object('ok', false, 'error', 'cannot receive payment on a cancelled order');\n END IF;\n\n -- \u2500\u2500 authorization \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n v_denial := agent_guard(p_tenant_id, p_actor_user_id, 'financial.receivables', 'update');\n IF v_denial IS NOT NULL THEN\n RETURN jsonb_build_object('ok', false, 'denial', v_denial);\n END IF;\n\n -- already fully paid?\n IF EXISTS (\n SELECT 1 FROM plg_financial_movements m\n WHERE m.invoice_id = v_order_id AND m.movement_kind = 'bill'\n ) AND NOT EXISTS (\n SELECT 1 FROM plg_financial_movements m\n WHERE m.invoice_id = v_order_id AND m.movement_kind = 'bill' AND m.status <> 'paid'\n ) THEN\n RETURN jsonb_build_object('ok', false, 'error', 'order is already fully paid');\n END IF;\n\n -- \u2500\u2500 invoice via the existing invariant function (impersonate the verified\n -- actor so fn_invoice_from_order's user_tenant_ids() check passes) \u2500\u2500\u2500\u2500\u2500\n PERFORM set_config('request.jwt.claims',\n jsonb_build_object('sub', p_actor_user_id, 'role', 'authenticated')::text,\n true);\n PERFORM fn_invoice_from_order(v_order_id, current_date, NULL, v_installments, 'credit');\n\n -- \u2500\u2500 settle: flip pending bill installments to paid + emit payment rows \u2500\u2500\u2500\n FOR v_bill IN\n SELECT m.* FROM plg_financial_movements m\n WHERE m.invoice_id = v_order_id\n AND m.tenant_id = p_tenant_id\n AND m.movement_kind = 'bill'\n AND m.status <> 'paid'\n ORDER BY m.installment_number NULLS FIRST\n LOOP\n UPDATE plg_financial_movements SET\n status = 'paid',\n paid_amount = v_bill.amount,\n payment_date = current_date,\n card_installments = CASE WHEN v_method = 'credit_card' THEN v_installments ELSE NULL END,\n metadata = COALESCE(metadata, '{}'::jsonb)\n || jsonb_build_object('paidVia', 'agent', 'method', v_method),\n updated_at = now()\n WHERE id = v_bill.id;\n\n INSERT INTO plg_financial_movements\n (tenant_id, invoice_id, direction, movement_kind, amount, paid_amount, status,\n due_date, payment_date, installment_number, card_installments, metadata)\n VALUES\n (p_tenant_id, v_order_id, v_bill.direction, 'payment', v_bill.amount, v_bill.amount,\n 'paid', v_bill.due_date, current_date, v_bill.installment_number,\n CASE WHEN v_method = 'credit_card' THEN v_installments ELSE NULL END,\n jsonb_build_object('source', 'agent', 'method', v_method));\n\n v_paid_count := v_paid_count + 1;\n v_total_paid := v_total_paid + v_bill.amount;\n END LOOP;\n\n IF v_paid_count = 0 THEN\n RETURN jsonb_build_object('ok', false, 'error', 'no open installments found to settle');\n END IF;\n\n INSERT INTO audit_logs (tenant_id, user_id, action, entity_type, entity_id, metadata)\n VALUES (p_tenant_id, p_actor_user_id, 'agent.markPaymentReceived', 'order', v_order_id::text,\n jsonb_build_object('payload', p_payload, 'installmentsSettled', v_paid_count,\n 'totalPaid', v_total_paid));\n\n RETURN jsonb_build_object(\n 'ok', true,\n 'id', v_order_id,\n 'record', jsonb_build_object(\n 'ref', jsonb_build_object('id', v_order_id, 'resource', 'orders',\n 'archetype', 'order:service_order'),\n 'method', v_method,\n 'installments', v_installments,\n 'installments_settled', v_paid_count,\n 'total_paid', v_total_paid\n )\n );\nEND;\n$$;\n\nREVOKE ALL ON FUNCTION public.agent_financial_mark_payment_received(uuid, uuid, jsonb) FROM public;\nREVOKE EXECUTE ON FUNCTION public.agent_financial_mark_payment_received(uuid, uuid, jsonb) FROM anon;\nGRANT EXECUTE ON FUNCTION public.agent_financial_mark_payment_received(uuid, uuid, jsonb)\n TO authenticated, service_role;\n";
|
|
13
13
|
export declare const MIGRATION_010_INVOICE_INTERNAL = "-- Financial plugin \u2014 separate WHO MAY invoice from HOW an invoice is built.\n--\n-- fn_invoice_from_order (004) mixes the two: it checks that the caller is a\n-- member of the order's tenant, then does the work. That check is right for a\n-- human clicking \"Faturar\" in the admin, and impossible for anything else \u2014 a\n-- storefront checkout runs as the SHOPPER, whose user_tenant_ids() is empty by\n-- definition, so an order that should raise a receivable the moment it is placed\n-- cannot raise one at all. SECURITY DEFINER does not help: auth.uid() still\n-- belongs to the caller inside the definer context.\n--\n-- So the body moves to an internal function with no authorization of its own,\n-- and fn_invoice_from_order keeps its signature, keeps its check, and delegates.\n-- Callers that exist today (CRM approveQuote, the agenda bridge) are untouched.\n-- The internal one is granted to NOBODY: it is reachable only from other\n-- SECURITY DEFINER functions and triggers that have already decided the caller\n-- is entitled \u2014 the shop's order-to-cash bridge being the first.\n--\n-- Idempotent.\n\nCREATE OR REPLACE FUNCTION public.fn_invoice_from_order_internal(\n p_order_id uuid,\n p_due_date date DEFAULT NULL,\n p_status text DEFAULT NULL,\n p_installments int DEFAULT 1,\n p_direction text DEFAULT 'credit'\n) RETURNS uuid\nLANGUAGE plpgsql\nSECURITY DEFINER\nSET search_path = public\nAS $$\nDECLARE\n v_order public.orders%ROWTYPE;\n v_ref text;\n v_seq bigint;\n v_summary text;\n v_contact text;\n v_existing uuid;\n v_kind text;\n v_prefix text;\n v_n int := GREATEST(COALESCE(p_installments, 1), 1);\n v_total numeric;\n v_base numeric;\n v_amt numeric;\n v_alloc numeric := 0;\n v_due date;\n i int;\nBEGIN\n SELECT * INTO v_order FROM public.orders WHERE id = p_order_id;\n IF NOT FOUND THEN RAISE EXCEPTION 'fn_invoice_from_order: order % not found', p_order_id; END IF;\n\n -- Idempotent: an order already carrying a bill is already invoiced.\n SELECT id INTO v_existing FROM public.plg_financial_movements\n WHERE invoice_id = p_order_id AND movement_kind = 'bill' LIMIT 1;\n IF v_existing IS NOT NULL THEN RETURN p_order_id; END IF;\n\n IF p_direction = 'debit' THEN v_kind := 'invoice_payable'; v_prefix := 'PAG';\n ELSE v_kind := 'invoice_receivable'; v_prefix := 'REC'; END IF;\n\n SELECT public.next_sequence(v_order.tenant_id, v_kind) INTO v_seq;\n v_ref := v_prefix || '-' || lpad(v_seq::text, 5, '0');\n\n SELECT string_agg(name, ', ' ORDER BY sort_order) INTO v_summary\n FROM public.order_items WHERE order_id = p_order_id;\n SELECT name INTO v_contact FROM public.people WHERE id = v_order.party_id;\n\n UPDATE public.orders SET\n status = COALESCE(p_status, status),\n stage = 'invoiced',\n direction = p_direction,\n reference_number = v_ref,\n metadata = COALESCE(metadata, '{}'::jsonb) || jsonb_build_object(\n 'itemsSummary', COALESCE(v_summary, ''),\n 'contactName', v_contact,\n 'installmentCount', v_n,\n 'quoteNumber', v_order.reference_number,\n 'direction', p_direction\n ),\n updated_at = now()\n WHERE id = p_order_id;\n\n v_total := COALESCE(v_order.total, 0);\n v_base := round(v_total / v_n, 2);\n v_due := COALESCE(p_due_date, current_date);\n FOR i IN 1..v_n LOOP\n IF i = v_n THEN v_amt := round(v_total - v_alloc, 2);\n ELSE v_amt := v_base; v_alloc := v_alloc + v_base; END IF;\n INSERT INTO public.plg_financial_movements\n (tenant_id, invoice_id, direction, movement_kind, amount, paid_amount, status, due_date, installment_number)\n VALUES\n (v_order.tenant_id, p_order_id, p_direction, 'bill', v_amt, 0, 'pending',\n (v_due + ((i - 1) || ' months')::interval)::date, i);\n END LOOP;\n\n RETURN p_order_id;\nEND;\n$$;\n\n-- Deliberately NOT granted to authenticated/anon: entry is through\n-- fn_invoice_from_order, or from another definer function that has already\n-- established the caller's right to create this receivable.\nREVOKE ALL ON FUNCTION public.fn_invoice_from_order_internal(uuid, date, text, int, text) FROM PUBLIC;\n\n-- The public entry point: unchanged signature and behaviour, now a guard around\n-- the shared body instead of a second copy of it.\nCREATE OR REPLACE FUNCTION public.fn_invoice_from_order(\n p_order_id uuid,\n p_due_date date DEFAULT NULL,\n p_status text DEFAULT NULL,\n p_installments int DEFAULT 1,\n p_direction text DEFAULT 'credit'\n) RETURNS uuid\nLANGUAGE plpgsql\nSECURITY DEFINER\nSET search_path = public\nAS $$\nDECLARE v_tenant uuid;\nBEGIN\n SELECT tenant_id INTO v_tenant FROM public.orders WHERE id = p_order_id;\n IF v_tenant IS NULL THEN\n RAISE EXCEPTION 'fn_invoice_from_order: order % not found', p_order_id;\n END IF;\n IF v_tenant NOT IN (SELECT public.user_tenant_ids()) THEN\n RAISE EXCEPTION 'fn_invoice_from_order: forbidden';\n END IF;\n\n RETURN public.fn_invoice_from_order_internal(\n p_order_id, p_due_date, p_status, p_installments, p_direction);\nEND;\n$$;\n\nGRANT EXECUTE ON FUNCTION public.fn_invoice_from_order(uuid, date, text, int, text) TO authenticated;\n\nNOTIFY pgrst, 'reload schema';\n";
|
|
14
|
+
export declare const MIGRATION_011_NFE = "-- 011_nfe.sql \u2014 Nota Fiscal Eletr\u00F4nica (NF-e / NFC-e / NFS-e)\n-- ----------------------------------------------------------------------------\n-- Fiscal documents the merchant issues, tracked against orders. This migration\n-- ships the STRUCTURE only: the actual authorization with SEFAZ / the prefeitura\n-- is delegated to an external emissor (Focus NFe, NFe.io, PlugNotas\u2026) wired\n-- later behind the provider's issueNota. Rows here carry the n\u00FAmero/s\u00E9rie,\n-- status, access key and the links to the authorized XML + DANFE once emitted.\n--\n-- Per-tenant RLS, canonical form (tenant_id IN user_tenant_ids()). Idempotent.\n\nCREATE TABLE IF NOT EXISTS public.plg_financial_nfe (\n id uuid PRIMARY KEY DEFAULT gen_random_uuid(),\n tenant_id uuid NOT NULL REFERENCES public.tenants(id) ON DELETE CASCADE,\n -- nfe (55, mercadoria) | nfce (65, consumidor) | nfse (servi\u00E7o)\n model text NOT NULL DEFAULT 'nfe',\n -- draft | processing | issued | cancelled | error\n status text NOT NULL DEFAULT 'draft',\n number text,\n series text,\n order_id uuid,\n contact_id uuid,\n contact_name text,\n total_amount numeric(14,2) NOT NULL DEFAULT 0,\n issued_at timestamptz,\n access_key text,\n xml_url text,\n danfe_url text,\n emissor text,\n error_message text,\n observations text,\n metadata jsonb NOT NULL DEFAULT '{}',\n created_at timestamptz NOT NULL DEFAULT now(),\n updated_at timestamptz NOT NULL DEFAULT now()\n);\n\nCREATE INDEX IF NOT EXISTS idx_plg_financial_nfe_tenant ON public.plg_financial_nfe(tenant_id);\nCREATE INDEX IF NOT EXISTS idx_plg_financial_nfe_order ON public.plg_financial_nfe(order_id);\n\nALTER TABLE public.plg_financial_nfe ENABLE ROW LEVEL SECURITY;\nGRANT SELECT, INSERT, UPDATE, DELETE ON public.plg_financial_nfe TO authenticated;\n\nDO $$\nBEGIN\n IF NOT EXISTS (SELECT 1 FROM pg_policies WHERE schemaname='public' AND tablename='plg_financial_nfe' AND policyname='plg_financial_nfe_select') THEN\n CREATE POLICY plg_financial_nfe_select ON public.plg_financial_nfe FOR SELECT TO authenticated USING (tenant_id IN (SELECT public.user_tenant_ids()));\n END IF;\n IF NOT EXISTS (SELECT 1 FROM pg_policies WHERE schemaname='public' AND tablename='plg_financial_nfe' AND policyname='plg_financial_nfe_insert') THEN\n CREATE POLICY plg_financial_nfe_insert ON public.plg_financial_nfe FOR INSERT TO authenticated WITH CHECK (tenant_id IN (SELECT public.user_tenant_ids()));\n END IF;\n IF NOT EXISTS (SELECT 1 FROM pg_policies WHERE schemaname='public' AND tablename='plg_financial_nfe' AND policyname='plg_financial_nfe_update') THEN\n CREATE POLICY plg_financial_nfe_update ON public.plg_financial_nfe FOR UPDATE TO authenticated USING (tenant_id IN (SELECT public.user_tenant_ids()));\n END IF;\n IF NOT EXISTS (SELECT 1 FROM pg_policies WHERE schemaname='public' AND tablename='plg_financial_nfe' AND policyname='plg_financial_nfe_delete') THEN\n CREATE POLICY plg_financial_nfe_delete ON public.plg_financial_nfe FOR DELETE TO authenticated USING (tenant_id IN (SELECT public.user_tenant_ids()));\n END IF;\nEND $$;\n\nNOTIFY pgrst, 'reload schema';\n";
|
|
14
15
|
export declare const MIGRATIONS: Array<{
|
|
15
16
|
id: string;
|
|
16
17
|
sql: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,wBAAwB,8+DA8BpC,CAAA;AAED,eAAO,MAAM,4BAA4B,woKA6GxC,CAAA;AAED,eAAO,MAAM,+BAA+B,67CA4B3C,CAAA;AAED,eAAO,MAAM,yBAAyB,0kBAYrC,CAAA;AAED,eAAO,MAAM,2BAA2B,25PAkLvC,CAAA;AAED,eAAO,MAAM,2BAA2B,y6CAsCvC,CAAA;AAED,eAAO,MAAM,0BAA0B,k3EAqCtC,CAAA;AAED,eAAO,MAAM,iCAAiC,kxCAoB7C,CAAA;AAED,eAAO,MAAM,4BAA4B,sjEAgCxC,CAAA;AAED,eAAO,MAAM,2CAA2C,8YAMvD,CAAA;AAED,eAAO,MAAM,qCAAqC,qqDA6BjD,CAAA;AAED,eAAO,MAAM,wBAAwB,uzPAqKpC,CAAA;AAED,eAAO,MAAM,8BAA8B,unKAqI1C,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,wBAAwB,8+DA8BpC,CAAA;AAED,eAAO,MAAM,4BAA4B,woKA6GxC,CAAA;AAED,eAAO,MAAM,+BAA+B,67CA4B3C,CAAA;AAED,eAAO,MAAM,yBAAyB,0kBAYrC,CAAA;AAED,eAAO,MAAM,2BAA2B,25PAkLvC,CAAA;AAED,eAAO,MAAM,2BAA2B,y6CAsCvC,CAAA;AAED,eAAO,MAAM,0BAA0B,k3EAqCtC,CAAA;AAED,eAAO,MAAM,iCAAiC,kxCAoB7C,CAAA;AAED,eAAO,MAAM,4BAA4B,sjEAgCxC,CAAA;AAED,eAAO,MAAM,2CAA2C,8YAMvD,CAAA;AAED,eAAO,MAAM,qCAAqC,qqDA6BjD,CAAA;AAED,eAAO,MAAM,wBAAwB,uzPAqKpC,CAAA;AAED,eAAO,MAAM,8BAA8B,unKAqI1C,CAAA;AAED,eAAO,MAAM,iBAAiB,srGA0D7B,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAezD,CAAA"}
|
package/dist/types.d.ts
CHANGED
|
@@ -288,6 +288,8 @@ export interface MovementQuery {
|
|
|
288
288
|
status?: MovementStatus | MovementStatus[];
|
|
289
289
|
bankAccountId?: string;
|
|
290
290
|
cashSessionId?: string;
|
|
291
|
+
/** Scope to a single invoice's movements (bills + payments). */
|
|
292
|
+
invoiceId?: string;
|
|
291
293
|
dateRange?: DateRange;
|
|
292
294
|
page?: number;
|
|
293
295
|
pageSize?: number;
|
|
@@ -451,4 +453,51 @@ export interface ReconcileInput {
|
|
|
451
453
|
/** Internal movement to link; omit to accept the line standalone */
|
|
452
454
|
matchedMovementId?: string;
|
|
453
455
|
}
|
|
456
|
+
/** 55 = NF-e (mercadoria), 65 = NFC-e (consumidor), nfse = serviço (prefeitura). */
|
|
457
|
+
export type NotaFiscalModel = 'nfe' | 'nfce' | 'nfse';
|
|
458
|
+
export type NotaFiscalStatus = 'draft' | 'processing' | 'issued' | 'cancelled' | 'error';
|
|
459
|
+
export interface NotaFiscal {
|
|
460
|
+
id: string;
|
|
461
|
+
tenantId: string;
|
|
462
|
+
model: NotaFiscalModel;
|
|
463
|
+
status: NotaFiscalStatus;
|
|
464
|
+
/** Número da nota — null while draft (assigned on issue). */
|
|
465
|
+
number: string | null;
|
|
466
|
+
series: string | null;
|
|
467
|
+
/** Order this nota documents (plg_shop_orders / orders id), if any. */
|
|
468
|
+
orderId?: string;
|
|
469
|
+
contactId?: string;
|
|
470
|
+
contactName?: string;
|
|
471
|
+
totalAmount: number;
|
|
472
|
+
issuedAt?: string;
|
|
473
|
+
/** Chave de acesso (44 dígitos), when authorized. */
|
|
474
|
+
accessKey?: string;
|
|
475
|
+
/** Links to the authorized XML and the DANFE/DANFCE PDF. */
|
|
476
|
+
xmlUrl?: string;
|
|
477
|
+
danfeUrl?: string;
|
|
478
|
+
/** External emissor id (focusnfe | nfeio | plugnotas | manual). */
|
|
479
|
+
emissor?: string;
|
|
480
|
+
errorMessage?: string;
|
|
481
|
+
observations?: string;
|
|
482
|
+
metadata?: Record<string, unknown>;
|
|
483
|
+
createdAt: string;
|
|
484
|
+
updatedAt: string;
|
|
485
|
+
}
|
|
486
|
+
export interface CreateNotaFiscalInput {
|
|
487
|
+
model?: NotaFiscalModel;
|
|
488
|
+
orderId?: string;
|
|
489
|
+
contactId?: string;
|
|
490
|
+
contactName?: string;
|
|
491
|
+
totalAmount: number;
|
|
492
|
+
series?: string;
|
|
493
|
+
observations?: string;
|
|
494
|
+
}
|
|
495
|
+
export interface NotaFiscalQuery {
|
|
496
|
+
status?: NotaFiscalStatus | NotaFiscalStatus[];
|
|
497
|
+
model?: NotaFiscalModel;
|
|
498
|
+
orderId?: string;
|
|
499
|
+
search?: string;
|
|
500
|
+
page?: number;
|
|
501
|
+
pageSize?: number;
|
|
502
|
+
}
|
|
454
503
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InvoiceDetailView.d.ts","sourceRoot":"","sources":["../../src/views/InvoiceDetailView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAA;AAU1D,OAAO,KAAK,EAA2C,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAY7F,wBAAgB,iBAAiB,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE;IACrF,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,oBAAoB,CAAA;IAC/B,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,8FAA8F;IAC9F,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,
|
|
1
|
+
{"version":3,"file":"InvoiceDetailView.d.ts","sourceRoot":"","sources":["../../src/views/InvoiceDetailView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAA;AAU1D,OAAO,KAAK,EAA2C,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAY7F,wBAAgB,iBAAiB,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE;IACrF,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,oBAAoB,CAAA;IAC/B,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,8FAA8F;IAC9F,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,qBA0kBA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NotasFiscaisView.d.ts","sourceRoot":"","sources":["../../src/views/NotasFiscaisView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAA;AA0B/D,wBAAgB,gBAAgB,sBAiJ/B"}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"fayz": {
|
|
4
4
|
"status": "beta"
|
|
5
5
|
},
|
|
6
|
-
"version": "0.8.
|
|
6
|
+
"version": "0.8.4",
|
|
7
7
|
"description": "Fayz SDK — plugin-financial plugin",
|
|
8
8
|
"type": "module",
|
|
9
9
|
"main": "./dist/index.cjs",
|
|
@@ -29,9 +29,9 @@
|
|
|
29
29
|
"lucide-react": "^0.400.0",
|
|
30
30
|
"zustand": "^4.5.0",
|
|
31
31
|
"@tanstack/react-table": "^8.20.0",
|
|
32
|
-
"@fayz-ai/
|
|
33
|
-
"@fayz-ai/
|
|
34
|
-
"@fayz-ai/
|
|
32
|
+
"@fayz-ai/saas": "^0.8.4",
|
|
33
|
+
"@fayz-ai/core": "^0.8.4",
|
|
34
|
+
"@fayz-ai/ui": "^0.8.4"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@types/react": "^18.3.0",
|
package/src/FinancialContext.tsx
CHANGED
|
@@ -16,6 +16,8 @@ export interface FinancialModules {
|
|
|
16
16
|
cards: boolean
|
|
17
17
|
/** Bank reconciliation (conciliação). Opt-in — enable when a bank connector imports statements. */
|
|
18
18
|
reconciliation: boolean
|
|
19
|
+
/** Notas fiscais (NF-e/NFC-e/NFS-e). Opt-in — enable for fiscal-document tracking. */
|
|
20
|
+
notasFiscais: boolean
|
|
19
21
|
}
|
|
20
22
|
|
|
21
23
|
export type FinancialCurrency = CurrencyConfig
|
package/src/FinancialPage.tsx
CHANGED
|
@@ -20,6 +20,7 @@ import { StatementsView } from './views/StatementsView'
|
|
|
20
20
|
import { CommissionsView } from './views/CommissionsView'
|
|
21
21
|
import { CardsView } from './views/CardsView'
|
|
22
22
|
import { ReconciliationView } from './views/ReconciliationView'
|
|
23
|
+
import { NotasFiscaisView } from './views/NotasFiscaisView'
|
|
23
24
|
import { FinancialGeneralSettings } from './components/FinancialGeneralSettings'
|
|
24
25
|
import { FinancialOnboarding } from './components/FinancialOnboarding'
|
|
25
26
|
|
|
@@ -117,6 +118,16 @@ function buildNav(
|
|
|
117
118
|
})
|
|
118
119
|
}
|
|
119
120
|
|
|
121
|
+
if (config.modules.notasFiscais) {
|
|
122
|
+
items.push({
|
|
123
|
+
id: 'notas-fiscais',
|
|
124
|
+
label: t('financial.nav.notasFiscais'),
|
|
125
|
+
icon: 'FileText',
|
|
126
|
+
active: activeView === 'notas-fiscais',
|
|
127
|
+
onClick: () => navigate('notas-fiscais'),
|
|
128
|
+
})
|
|
129
|
+
}
|
|
130
|
+
|
|
120
131
|
if (config.modules.commissions) {
|
|
121
132
|
items.push({
|
|
122
133
|
id: 'commissions',
|
|
@@ -166,6 +177,7 @@ export function FinancialPage({ config, provider, store, registries }: {
|
|
|
166
177
|
summary: 0,
|
|
167
178
|
'payables-list': 0, 'payables-new': 1, 'receivables-list': 0, 'receivables-new': 1,
|
|
168
179
|
'cash-registers': 0, statements: 0, reconciliation: 0, commissions: 0, cards: 0,
|
|
180
|
+
'notas-fiscais': 0,
|
|
169
181
|
settings: 1,
|
|
170
182
|
})
|
|
171
183
|
|
|
@@ -321,6 +333,8 @@ export function FinancialPage({ config, provider, store, registries }: {
|
|
|
321
333
|
return <CommissionsView />
|
|
322
334
|
case 'cards':
|
|
323
335
|
return <CardsView />
|
|
336
|
+
case 'notas-fiscais':
|
|
337
|
+
return <NotasFiscaisView />
|
|
324
338
|
default:
|
|
325
339
|
return <SummaryView />
|
|
326
340
|
}
|
package/src/data/mock.ts
CHANGED
|
@@ -8,6 +8,7 @@ import type {
|
|
|
8
8
|
InvoiceQuery, MovementQuery, StatementQuery,
|
|
9
9
|
PaginatedResult, FinancialSummary, StatementEntry, StatementResult, CashSessionSummary,
|
|
10
10
|
DateRange, InvoiceStatus, MovementStatus,
|
|
11
|
+
NotaFiscal, CreateNotaFiscalInput, NotaFiscalQuery,
|
|
11
12
|
} from '../types'
|
|
12
13
|
|
|
13
14
|
// ---------------------------------------------------------------------------
|
|
@@ -64,6 +65,7 @@ interface MockStore {
|
|
|
64
65
|
chartOfAccounts: ChartOfAccountsNode[]
|
|
65
66
|
costCenters: CostCenter[]
|
|
66
67
|
cardTransactions: CardTransaction[]
|
|
68
|
+
notas: NotaFiscal[]
|
|
67
69
|
}
|
|
68
70
|
|
|
69
71
|
function createStore(options?: MockFinancialProviderOptions): MockStore {
|
|
@@ -124,6 +126,7 @@ function createStore(options?: MockFinancialProviderOptions): MockStore {
|
|
|
124
126
|
chartOfAccounts: [],
|
|
125
127
|
costCenters: [],
|
|
126
128
|
cardTransactions: [],
|
|
129
|
+
notas: [],
|
|
127
130
|
}
|
|
128
131
|
}
|
|
129
132
|
|
|
@@ -767,6 +770,72 @@ export function createMockFinancialProvider(options?: MockFinancialProviderOptio
|
|
|
767
770
|
if (internal) { internal.reconciledAt = undefined; internal.updatedAt = now() }
|
|
768
771
|
}
|
|
769
772
|
},
|
|
773
|
+
|
|
774
|
+
// --- Notas fiscais (NF-e / NFC-e / NFS-e) ---
|
|
775
|
+
async getNotas(query: NotaFiscalQuery): Promise<PaginatedResult<NotaFiscal>> {
|
|
776
|
+
let list = [...store.notas].sort((a, b) => b.createdAt.localeCompare(a.createdAt))
|
|
777
|
+
if (query.status) list = list.filter((n) => matchesStatus(n.status, query.status))
|
|
778
|
+
if (query.model) list = list.filter((n) => n.model === query.model)
|
|
779
|
+
if (query.orderId) list = list.filter((n) => n.orderId === query.orderId)
|
|
780
|
+
if (query.search) {
|
|
781
|
+
const q = query.search.toLowerCase()
|
|
782
|
+
list = list.filter((n) => (n.number ?? '').toLowerCase().includes(q) || (n.contactName ?? '').toLowerCase().includes(q))
|
|
783
|
+
}
|
|
784
|
+
return paginate(list, query.page, query.pageSize)
|
|
785
|
+
},
|
|
786
|
+
|
|
787
|
+
async getNotaById(id: string): Promise<NotaFiscal | null> {
|
|
788
|
+
return store.notas.find((n) => n.id === id) ?? null
|
|
789
|
+
},
|
|
790
|
+
|
|
791
|
+
async createNota(input: CreateNotaFiscalInput): Promise<NotaFiscal> {
|
|
792
|
+
const nota: NotaFiscal = {
|
|
793
|
+
id: uid(),
|
|
794
|
+
tenantId: 'mock-tenant',
|
|
795
|
+
model: input.model ?? 'nfe',
|
|
796
|
+
status: 'draft',
|
|
797
|
+
number: null,
|
|
798
|
+
series: input.series ?? null,
|
|
799
|
+
orderId: input.orderId,
|
|
800
|
+
contactId: input.contactId,
|
|
801
|
+
contactName: input.contactName,
|
|
802
|
+
totalAmount: input.totalAmount,
|
|
803
|
+
observations: input.observations,
|
|
804
|
+
createdAt: now(),
|
|
805
|
+
updatedAt: now(),
|
|
806
|
+
}
|
|
807
|
+
store.notas.unshift(nota)
|
|
808
|
+
return nota
|
|
809
|
+
},
|
|
810
|
+
|
|
811
|
+
async updateNota(id: string, patch: Partial<NotaFiscal>): Promise<NotaFiscal> {
|
|
812
|
+
const nota = store.notas.find((n) => n.id === id)
|
|
813
|
+
if (!nota) throw new Error('Nota fiscal not found')
|
|
814
|
+
Object.assign(nota, patch, { updatedAt: now() })
|
|
815
|
+
return nota
|
|
816
|
+
},
|
|
817
|
+
|
|
818
|
+
async issueNota(id: string): Promise<NotaFiscal> {
|
|
819
|
+
const nota = store.notas.find((n) => n.id === id)
|
|
820
|
+
if (!nota) throw new Error('Nota fiscal not found')
|
|
821
|
+
const issuedCount = store.notas.filter((n) => n.status === 'issued').length
|
|
822
|
+
nota.status = 'issued'
|
|
823
|
+
nota.number = String(issuedCount + 1).padStart(6, '0')
|
|
824
|
+
nota.series = nota.series ?? '1'
|
|
825
|
+
nota.issuedAt = now()
|
|
826
|
+
nota.emissor = 'manual'
|
|
827
|
+
nota.updatedAt = now()
|
|
828
|
+
return nota
|
|
829
|
+
},
|
|
830
|
+
|
|
831
|
+
async cancelNota(id: string, reason?: string): Promise<NotaFiscal> {
|
|
832
|
+
const nota = store.notas.find((n) => n.id === id)
|
|
833
|
+
if (!nota) throw new Error('Nota fiscal not found')
|
|
834
|
+
nota.status = 'cancelled'
|
|
835
|
+
nota.errorMessage = reason
|
|
836
|
+
nota.updatedAt = now()
|
|
837
|
+
return nota
|
|
838
|
+
},
|
|
770
839
|
}
|
|
771
840
|
|
|
772
841
|
return provider
|
package/src/data/supabase.ts
CHANGED
|
@@ -8,6 +8,7 @@ import type {
|
|
|
8
8
|
InvoiceQuery, MovementQuery, StatementQuery,
|
|
9
9
|
PaginatedResult, FinancialSummary, StatementEntry, StatementResult, CashSessionSummary,
|
|
10
10
|
DateRange, ReconciliationCandidate,
|
|
11
|
+
NotaFiscal, CreateNotaFiscalInput, NotaFiscalQuery,
|
|
11
12
|
} from '../types'
|
|
12
13
|
import { getSupabaseClientOptional, getActiveTenantId } from '@fayz-ai/core'
|
|
13
14
|
import { getFinancialTenantId } from '../lib/tenant'
|
|
@@ -357,6 +358,7 @@ export function createSupabaseFinancialProvider(): FinancialDataProvider {
|
|
|
357
358
|
}
|
|
358
359
|
if (query.bankAccountId) qb = qb.eq('bank_account_id', query.bankAccountId)
|
|
359
360
|
if (query.cashSessionId) qb = qb.eq('cash_session_id', query.cashSessionId)
|
|
361
|
+
if (query.invoiceId) qb = qb.eq('invoice_id', query.invoiceId)
|
|
360
362
|
if (query.dateRange) qb = qb.gte('due_date', query.dateRange.from).lte('due_date', query.dateRange.to)
|
|
361
363
|
const page = query.page ?? 1
|
|
362
364
|
const pageSize = query.pageSize ?? 50
|
|
@@ -883,6 +885,83 @@ export function createSupabaseFinancialProvider(): FinancialDataProvider {
|
|
|
883
885
|
await pub.from(T.movements).update({ reconciled_at: null }).eq('id', line.matched_movement_id)
|
|
884
886
|
}
|
|
885
887
|
},
|
|
888
|
+
|
|
889
|
+
// --- Notas fiscais (NF-e / NFC-e / NFS-e) ---
|
|
890
|
+
async getNotas(query: NotaFiscalQuery): Promise<PaginatedResult<NotaFiscal>> {
|
|
891
|
+
const { pub } = getClients()
|
|
892
|
+
let qb = pub.from(T.notas).select('*', { count: 'exact' })
|
|
893
|
+
if (query.status) {
|
|
894
|
+
const statuses = Array.isArray(query.status) ? query.status : [query.status]
|
|
895
|
+
qb = qb.in('status', statuses)
|
|
896
|
+
}
|
|
897
|
+
if (query.model) qb = qb.eq('model', query.model)
|
|
898
|
+
if (query.orderId) qb = qb.eq('order_id', query.orderId)
|
|
899
|
+
if (query.search) qb = qb.or(`number.ilike.%${query.search}%,contact_name.ilike.%${query.search}%`)
|
|
900
|
+
const page = query.page ?? 1
|
|
901
|
+
const pageSize = query.pageSize ?? 50
|
|
902
|
+
qb = qb.range((page - 1) * pageSize, page * pageSize - 1).order('created_at', { ascending: false })
|
|
903
|
+
const { data, count } = await qb
|
|
904
|
+
return { data: (data ?? []).map((r: any) => snakeToCamel(r) as unknown as NotaFiscal), total: count ?? 0 }
|
|
905
|
+
},
|
|
906
|
+
|
|
907
|
+
async getNotaById(id: string): Promise<NotaFiscal | null> {
|
|
908
|
+
const { pub } = getClients()
|
|
909
|
+
const { data } = await pub.from(T.notas).select('*').eq('id', id).maybeSingle()
|
|
910
|
+
return data ? (snakeToCamel(data) as unknown as NotaFiscal) : null
|
|
911
|
+
},
|
|
912
|
+
|
|
913
|
+
async createNota(input: CreateNotaFiscalInput): Promise<NotaFiscal> {
|
|
914
|
+
const { pub } = getClients()
|
|
915
|
+
const row = {
|
|
916
|
+
tenant_id: getTenantId(),
|
|
917
|
+
model: input.model ?? 'nfe',
|
|
918
|
+
status: 'draft',
|
|
919
|
+
series: input.series ?? null,
|
|
920
|
+
order_id: input.orderId ?? null,
|
|
921
|
+
contact_id: input.contactId ?? null,
|
|
922
|
+
contact_name: input.contactName ?? null,
|
|
923
|
+
total_amount: input.totalAmount,
|
|
924
|
+
observations: input.observations ?? null,
|
|
925
|
+
}
|
|
926
|
+
const { data, error } = await pub.from(T.notas).insert(row).select().single()
|
|
927
|
+
if (error) throw error
|
|
928
|
+
return snakeToCamel(data) as unknown as NotaFiscal
|
|
929
|
+
},
|
|
930
|
+
|
|
931
|
+
async updateNota(id: string, patch: Partial<NotaFiscal>): Promise<NotaFiscal> {
|
|
932
|
+
const { pub } = getClients()
|
|
933
|
+
const { data, error } = await pub.from(T.notas).update(camelToSnake(patch as Record<string, unknown>)).eq('id', id).select().single()
|
|
934
|
+
if (error) throw error
|
|
935
|
+
return snakeToCamel(data) as unknown as NotaFiscal
|
|
936
|
+
},
|
|
937
|
+
|
|
938
|
+
// Emission seam: no SEFAZ integration yet, so assign a número/série locally
|
|
939
|
+
// and mark it issued. An external emissor replaces this body (or overrides
|
|
940
|
+
// issueNota on a wrapping provider) without any UI change.
|
|
941
|
+
async issueNota(id: string): Promise<NotaFiscal> {
|
|
942
|
+
const { pub } = getClients()
|
|
943
|
+
const { data: current } = await pub.from(T.notas).select('series').eq('id', id).single()
|
|
944
|
+
const { count } = await pub.from(T.notas).select('id', { count: 'exact', head: true }).eq('status', 'issued')
|
|
945
|
+
const patch = {
|
|
946
|
+
status: 'issued',
|
|
947
|
+
number: String((count ?? 0) + 1).padStart(6, '0'),
|
|
948
|
+
series: current?.series ?? '1',
|
|
949
|
+
issued_at: new Date().toISOString(),
|
|
950
|
+
emissor: 'manual',
|
|
951
|
+
}
|
|
952
|
+
const { data, error } = await pub.from(T.notas).update(patch).eq('id', id).select().single()
|
|
953
|
+
if (error) throw error
|
|
954
|
+
return snakeToCamel(data) as unknown as NotaFiscal
|
|
955
|
+
},
|
|
956
|
+
|
|
957
|
+
async cancelNota(id: string, reason?: string): Promise<NotaFiscal> {
|
|
958
|
+
const { pub } = getClients()
|
|
959
|
+
const { data, error } = await pub.from(T.notas)
|
|
960
|
+
.update({ status: 'cancelled', error_message: reason ?? null })
|
|
961
|
+
.eq('id', id).select().single()
|
|
962
|
+
if (error) throw error
|
|
963
|
+
return snakeToCamel(data) as unknown as NotaFiscal
|
|
964
|
+
},
|
|
886
965
|
}
|
|
887
966
|
|
|
888
967
|
return provider
|
package/src/data/tables.ts
CHANGED
package/src/data/types.ts
CHANGED
|
@@ -9,6 +9,7 @@ import type {
|
|
|
9
9
|
DateRange,
|
|
10
10
|
ImportBankTransactionsInput, ImportBankTransactionsResult,
|
|
11
11
|
UnreconciledQuery, ReconciliationCandidate, ReconcileInput,
|
|
12
|
+
NotaFiscal, CreateNotaFiscalInput, NotaFiscalQuery,
|
|
12
13
|
} from '../types'
|
|
13
14
|
|
|
14
15
|
export interface FinancialDataProvider {
|
|
@@ -70,4 +71,16 @@ export interface FinancialDataProvider {
|
|
|
70
71
|
reconcileMovement?(input: ReconcileInput): Promise<void>
|
|
71
72
|
/** Undo a reconciliation. */
|
|
72
73
|
unreconcileMovement?(bankMovementId: string): Promise<void>
|
|
74
|
+
|
|
75
|
+
// --- Notas fiscais (NF-e / NFC-e / NFS-e) ---
|
|
76
|
+
// Optional: implemented by providers that back the Notas Fiscais tab. Emission
|
|
77
|
+
// to SEFAZ is delegated — `issueNota` is the seam an external emissor plugs
|
|
78
|
+
// into; until then it assigns a número/série locally and marks it issued.
|
|
79
|
+
getNotas?(query: NotaFiscalQuery): Promise<PaginatedResult<NotaFiscal>>
|
|
80
|
+
getNotaById?(id: string): Promise<NotaFiscal | null>
|
|
81
|
+
createNota?(input: CreateNotaFiscalInput): Promise<NotaFiscal>
|
|
82
|
+
updateNota?(id: string, data: Partial<NotaFiscal>): Promise<NotaFiscal>
|
|
83
|
+
/** Request authorization. Decoupled from the fiscal gateway — see note above. */
|
|
84
|
+
issueNota?(id: string): Promise<NotaFiscal>
|
|
85
|
+
cancelNota?(id: string, reason?: string): Promise<NotaFiscal>
|
|
73
86
|
}
|
package/src/index.ts
CHANGED
|
@@ -50,6 +50,7 @@ export interface FinancialPluginLabels {
|
|
|
50
50
|
cards: string
|
|
51
51
|
cardsOverview: string
|
|
52
52
|
cardsReconciliation: string
|
|
53
|
+
notasFiscais: string
|
|
53
54
|
}
|
|
54
55
|
|
|
55
56
|
export interface ItemTypeOption {
|
|
@@ -68,6 +69,8 @@ export interface FinancialPluginOptions {
|
|
|
68
69
|
cards?: boolean
|
|
69
70
|
/** Bank reconciliation (conciliação). Defaults off — enable with a bank connector. */
|
|
70
71
|
reconciliation?: boolean
|
|
72
|
+
/** Notas fiscais (NF-e/NFC-e/NFS-e). Defaults off — opt-in per app. */
|
|
73
|
+
notasFiscais?: boolean
|
|
71
74
|
}
|
|
72
75
|
labels?: Partial<FinancialPluginLabels>
|
|
73
76
|
currency?: {
|
|
@@ -162,6 +165,7 @@ const DEFAULT_LABELS: FinancialPluginLabels = {
|
|
|
162
165
|
cards: 'Cards',
|
|
163
166
|
cardsOverview: 'Overview',
|
|
164
167
|
cardsReconciliation: 'Reconciliation',
|
|
168
|
+
notasFiscais: 'Fiscal Invoices',
|
|
165
169
|
}
|
|
166
170
|
|
|
167
171
|
const DEFAULT_CURRENCY = { code: 'BRL', locale: 'pt-BR', symbol: 'R$' }
|
|
@@ -204,6 +208,8 @@ function resolveConfig(options?: FinancialPluginOptions): ResolvedFinancialConfi
|
|
|
204
208
|
cards: options?.modules?.cards !== false,
|
|
205
209
|
// Opt-in: only shown when an app explicitly enables reconciliation (bank connector present).
|
|
206
210
|
reconciliation: options?.modules?.reconciliation === true,
|
|
211
|
+
// Opt-in: only shown when an app explicitly enables fiscal-invoice tracking.
|
|
212
|
+
notasFiscais: options?.modules?.notasFiscais === true,
|
|
207
213
|
},
|
|
208
214
|
// Opt-in: only render the plugin's own quick-add buttons/FAB when the host asks.
|
|
209
215
|
quickAdd: options?.quickAdd === true,
|
package/src/locales/en.ts
CHANGED
|
@@ -134,6 +134,7 @@ export const en: Record<string, string> = {
|
|
|
134
134
|
"financial.nav.payables": "Accounts Payable",
|
|
135
135
|
"financial.nav.receivables": "Accounts Receivable",
|
|
136
136
|
"financial.nav.reconciliation": "Reconciliation",
|
|
137
|
+
"financial.nav.notasFiscais": "Fiscal Invoices",
|
|
137
138
|
"financial.nav.recurringExpenses": "Recurring Expenses",
|
|
138
139
|
"financial.nav.rules": "Rules",
|
|
139
140
|
"financial.nav.statements": "Statements",
|
package/src/locales/pt-BR.ts
CHANGED
|
@@ -134,6 +134,7 @@ export const ptBR: Record<string, string> = {
|
|
|
134
134
|
"financial.nav.payables": "Contas a Pagar",
|
|
135
135
|
"financial.nav.receivables": "Contas a Receber",
|
|
136
136
|
"financial.nav.reconciliation": "Conciliação",
|
|
137
|
+
"financial.nav.notasFiscais": "Notas Fiscais",
|
|
137
138
|
"financial.nav.recurringExpenses": "Despesas Recorrentes",
|
|
138
139
|
"financial.nav.rules": "Regras",
|
|
139
140
|
"financial.nav.statements": "Extratos",
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
-- 011_nfe.sql — Nota Fiscal Eletrônica (NF-e / NFC-e / NFS-e)
|
|
2
|
+
-- ----------------------------------------------------------------------------
|
|
3
|
+
-- Fiscal documents the merchant issues, tracked against orders. This migration
|
|
4
|
+
-- ships the STRUCTURE only: the actual authorization with SEFAZ / the prefeitura
|
|
5
|
+
-- is delegated to an external emissor (Focus NFe, NFe.io, PlugNotas…) wired
|
|
6
|
+
-- later behind the provider's issueNota. Rows here carry the número/série,
|
|
7
|
+
-- status, access key and the links to the authorized XML + DANFE once emitted.
|
|
8
|
+
--
|
|
9
|
+
-- Per-tenant RLS, canonical form (tenant_id IN user_tenant_ids()). Idempotent.
|
|
10
|
+
|
|
11
|
+
CREATE TABLE IF NOT EXISTS public.plg_financial_nfe (
|
|
12
|
+
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
13
|
+
tenant_id uuid NOT NULL REFERENCES public.tenants(id) ON DELETE CASCADE,
|
|
14
|
+
-- nfe (55, mercadoria) | nfce (65, consumidor) | nfse (serviço)
|
|
15
|
+
model text NOT NULL DEFAULT 'nfe',
|
|
16
|
+
-- draft | processing | issued | cancelled | error
|
|
17
|
+
status text NOT NULL DEFAULT 'draft',
|
|
18
|
+
number text,
|
|
19
|
+
series text,
|
|
20
|
+
order_id uuid,
|
|
21
|
+
contact_id uuid,
|
|
22
|
+
contact_name text,
|
|
23
|
+
total_amount numeric(14,2) NOT NULL DEFAULT 0,
|
|
24
|
+
issued_at timestamptz,
|
|
25
|
+
access_key text,
|
|
26
|
+
xml_url text,
|
|
27
|
+
danfe_url text,
|
|
28
|
+
emissor text,
|
|
29
|
+
error_message text,
|
|
30
|
+
observations text,
|
|
31
|
+
metadata jsonb NOT NULL DEFAULT '{}',
|
|
32
|
+
created_at timestamptz NOT NULL DEFAULT now(),
|
|
33
|
+
updated_at timestamptz NOT NULL DEFAULT now()
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
CREATE INDEX IF NOT EXISTS idx_plg_financial_nfe_tenant ON public.plg_financial_nfe(tenant_id);
|
|
37
|
+
CREATE INDEX IF NOT EXISTS idx_plg_financial_nfe_order ON public.plg_financial_nfe(order_id);
|
|
38
|
+
|
|
39
|
+
ALTER TABLE public.plg_financial_nfe ENABLE ROW LEVEL SECURITY;
|
|
40
|
+
GRANT SELECT, INSERT, UPDATE, DELETE ON public.plg_financial_nfe TO authenticated;
|
|
41
|
+
|
|
42
|
+
DO $$
|
|
43
|
+
BEGIN
|
|
44
|
+
IF NOT EXISTS (SELECT 1 FROM pg_policies WHERE schemaname='public' AND tablename='plg_financial_nfe' AND policyname='plg_financial_nfe_select') THEN
|
|
45
|
+
CREATE POLICY plg_financial_nfe_select ON public.plg_financial_nfe FOR SELECT TO authenticated USING (tenant_id IN (SELECT public.user_tenant_ids()));
|
|
46
|
+
END IF;
|
|
47
|
+
IF NOT EXISTS (SELECT 1 FROM pg_policies WHERE schemaname='public' AND tablename='plg_financial_nfe' AND policyname='plg_financial_nfe_insert') THEN
|
|
48
|
+
CREATE POLICY plg_financial_nfe_insert ON public.plg_financial_nfe FOR INSERT TO authenticated WITH CHECK (tenant_id IN (SELECT public.user_tenant_ids()));
|
|
49
|
+
END IF;
|
|
50
|
+
IF NOT EXISTS (SELECT 1 FROM pg_policies WHERE schemaname='public' AND tablename='plg_financial_nfe' AND policyname='plg_financial_nfe_update') THEN
|
|
51
|
+
CREATE POLICY plg_financial_nfe_update ON public.plg_financial_nfe FOR UPDATE TO authenticated USING (tenant_id IN (SELECT public.user_tenant_ids()));
|
|
52
|
+
END IF;
|
|
53
|
+
IF NOT EXISTS (SELECT 1 FROM pg_policies WHERE schemaname='public' AND tablename='plg_financial_nfe' AND policyname='plg_financial_nfe_delete') THEN
|
|
54
|
+
CREATE POLICY plg_financial_nfe_delete ON public.plg_financial_nfe FOR DELETE TO authenticated USING (tenant_id IN (SELECT public.user_tenant_ids()));
|
|
55
|
+
END IF;
|
|
56
|
+
END $$;
|
|
57
|
+
|
|
58
|
+
NOTIFY pgrst, 'reload schema';
|