@fayz-ai/financial 0.1.6 → 0.1.8

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.
@@ -2,7 +2,7 @@ import { summarizeLedger, trailingWindow } from './chunk-T7WIM2V7.js';
2
2
  import { matchStatementLines } from './chunk-ZFUQBYBG.js';
3
3
  import { emptyStatement, isRealized, buildStatement, ledgerBalance } from './chunk-HJPUHTI2.js';
4
4
  import { transferLegs } from './chunk-YUNLQYOZ.js';
5
- import { cancellationReason, assertReschedule, lineTotal, invoiceTotal, itemsDescription, invoiceStatusOf } from './chunk-7HISDBUG.js';
5
+ import { cancellationReason, assertReschedule, lineTotal, invoiceTotal, itemsDescription, invoiceStatusOf } from './chunk-5RMPZIMO.js';
6
6
  import { openAmount, paymentFee } from './chunk-4GXBOEI3.js';
7
7
  import { sessionCashFlow, closingDifference } from './chunk-56NQHYL7.js';
8
8
  import { runReconcileAsBill, runReconcileLink } from './chunk-FNXIAIUZ.js';
@@ -154,7 +154,11 @@ function createMockFinancialProvider(options) {
154
154
  );
155
155
  results = results.filter((i) => pagas.has(i.id));
156
156
  }
157
- if (query.dateRange) results = results.filter((i) => matchesDateRange(i.invoiceDate, query.dateRange));
157
+ if (query.dateRange) {
158
+ const from = query.dateRange.from.slice(0, 10);
159
+ const overdueBefore = (i) => query.includeOverdue === true && !!i.dueDate && i.dueDate.slice(0, 10) < from && (i.status === "overdue" || i.status === "partial" || i.status === "open" && i.dueDate.slice(0, 10) < today());
160
+ results = results.filter((i) => matchesDateRange(i.invoiceDate, query.dateRange) || overdueBefore(i));
161
+ }
158
162
  if (query.search) {
159
163
  const s = query.search.toLowerCase();
160
164
  results = results.filter(
@@ -889,5 +893,5 @@ function createMockFinancialProvider(options) {
889
893
  }
890
894
 
891
895
  export { createMockFinancialProvider };
892
- //# sourceMappingURL=chunk-UERJA7QH.js.map
893
- //# sourceMappingURL=chunk-UERJA7QH.js.map
896
+ //# sourceMappingURL=chunk-UXALK7CT.js.map
897
+ //# sourceMappingURL=chunk-UXALK7CT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/data/mock.ts"],"names":["bill"],"mappings":"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","file":"chunk-UXALK7CT.js","sourcesContent":["import type { BankAccount, CreateBankAccountInput } from '../domain/account'\nimport type { CardTransaction } from '../domain/card'\nimport {\n closingDifference, sessionCashFlow,\n type CashSession, type CashSessionSummary, type CloseCashSessionInput, type OpenCashSessionInput,\n} from '../domain/cash-session'\nimport type { ChartOfAccountsNode, CostCenter } from '../domain/chart-of-accounts'\nimport {\n assertReschedule, cancellationReason, invoiceStatusOf, invoiceTotal, itemsDescription, lineTotal,\n type CreateInvoiceInput, type CreateInvoiceItemInput, type Invoice, type InvoiceItem, type InvoiceQuery, type InvoiceStatus,\n} from '../domain/invoice'\nimport { round2 } from '../domain/money'\nimport { openAmount, paymentFee, type FinancialMovement, type MovementQuery, type MovementStatus, type PayMovementInput } from '../domain/movement'\nimport type { CreateNotaFiscalInput, NotaFiscal, NotaFiscalQuery } from '../domain/nota-fiscal'\nimport type { PaymentMethod, PaymentMethodType } from '../domain/payment-method'\nimport type { DateRange, PaginatedResult } from '../domain/query'\nimport {\n candidateScore, candidateTolerance, pageTotals, statementLegOf, statementLinesPage, toReconcileLine, transferForStatementLine,\n type ImportedStatementLine,\n} from '../domain/reconciliation'\nimport type { RecurringBill, SaveRecurringBillInput } from '../domain/recurring-bill'\nimport { summarizeLedger, trailingWindow, type DreQuery, type DreRow, type FinancialSummary } from '../domain/report'\nimport { buildStatement, emptyStatement, isRealized, ledgerBalance, type StatementQuery, type StatementResult } from '../domain/statement'\nimport { matchStatementLines, type MovementContext } from '../domain/statement-match'\nimport { transferLegs, type CreateTransferInput, type TransferResult } from '../domain/transfer'\nimport type { FinancialDataProvider } from './provider'\nimport { runReconcileAsBill, runReconcileLink, type ReconcileCapableProvider } from './reconcile'\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nlet nextId = 1\nfunction uid(): string {\n return String(nextId++)\n}\n\nfunction now(): string {\n return new Date().toISOString()\n}\n\nfunction today(): string {\n return new Date().toISOString().slice(0, 10)\n}\n\nfunction matchesDateRange(dateStr: string | undefined, range?: DateRange): boolean {\n if (!range || !dateStr) return true\n return dateStr >= range.from && dateStr <= range.to\n}\n\nfunction matchesStatus<T extends string>(status: T, filter?: T | T[]): boolean {\n if (!filter) return true\n if (Array.isArray(filter)) return filter.includes(status)\n return status === filter\n}\n\nfunction paginate<T>(items: T[], page?: number, pageSize?: number): PaginatedResult<T> {\n const p = page ?? 1\n const ps = pageSize ?? 50\n const start = (p - 1) * ps\n return { data: items.slice(start, start + ps), total: items.length }\n}\n\n// ---------------------------------------------------------------------------\n// In-memory store\n// ---------------------------------------------------------------------------\n\ninterface MockStore {\n invoices: Invoice[]\n invoiceItems: InvoiceItem[]\n movements: FinancialMovement[]\n /** A evidencia do extrato — nao e movimento; ver migration 112. */\n statementLines: ImportedStatementLine[]\n /** Que conta tem extrato, e por qual provedor; ver migration 113. */\n statementSources: Array<{ accountId: string; provider: string; isActive: boolean }>\n bankAccounts: BankAccount[]\n cashSessions: CashSession[]\n paymentMethods: PaymentMethod[]\n paymentMethodTypes: PaymentMethodType[]\n chartOfAccounts: ChartOfAccountsNode[]\n costCenters: CostCenter[]\n cardTransactions: CardTransaction[]\n notas: NotaFiscal[]\n recurringBills: RecurringBill[]\n}\n\nfunction createStore(options?: MockFinancialProviderOptions): MockStore {\n const tenantId = 'mock-tenant'\n const seed = options?.seed\n\n const defaultPMTypes: PaymentMethodType[] = (options?.paymentMethodTypes ?? [\n { name: 'Cash', transactionType: 'cash' },\n { name: 'Credit Card', transactionType: 'credit_card' },\n { name: 'Debit Card', transactionType: 'debit_card' },\n { name: 'PIX', transactionType: 'pix' },\n { name: 'Bank Transfer', transactionType: 'transfer' },\n ]).map((t) => ({\n id: uid(),\n name: t.name,\n transactionType: t.transactionType,\n isActive: true,\n tenantId,\n createdAt: now(),\n }))\n\n const cashAccount: BankAccount = {\n id: uid(),\n name: 'Main Cash Register',\n accountType: 'cash_physical',\n currentBalance: 0,\n initialBalance: 0,\n isActive: true,\n tenantId,\n createdAt: now(),\n updatedAt: now(),\n }\n\n const bankAccount: BankAccount = {\n id: uid(),\n name: 'Business Checking',\n accountType: 'bank',\n bankName: 'Main Bank',\n currentBalance: 0,\n initialBalance: 0,\n isActive: true,\n tenantId,\n createdAt: now(),\n updatedAt: now(),\n }\n\n return {\n // Seeded data (when provided) makes the module render as if the user already\n // has accounts + transactions — a populated Summary/Statements instead of the\n // empty onboarding state. Seed arrays are copied so the caller's data is not mutated.\n invoices: seed?.invoices ? [...seed.invoices] : [],\n invoiceItems: seed?.invoiceItems ? [...seed.invoiceItems] : [],\n movements: seed?.movements ? [...seed.movements] : [],\n statementLines: [],\n statementSources: [],\n bankAccounts: seed?.bankAccounts ? [...seed.bankAccounts] : [cashAccount, bankAccount],\n cashSessions: [],\n paymentMethods: seed?.paymentMethods ? [...seed.paymentMethods] : [],\n paymentMethodTypes: defaultPMTypes,\n chartOfAccounts: [],\n costCenters: [],\n cardTransactions: [],\n notas: [],\n recurringBills: seed?.recurringBills ? [...seed.recurringBills] : [],\n }\n}\n\n// ---------------------------------------------------------------------------\n// Mock provider factory\n// ---------------------------------------------------------------------------\n\n/**\n * Pre-populated store data. Any omitted collection stays empty (except\n * bankAccounts, which fall back to the two default mock accounts when absent).\n * Pass full domain objects — the mock treats them as the existing ledger.\n */\nexport interface MockFinancialSeed {\n bankAccounts?: BankAccount[]\n invoices?: Invoice[]\n invoiceItems?: InvoiceItem[]\n movements?: FinancialMovement[]\n paymentMethods?: PaymentMethod[]\n recurringBills?: RecurringBill[]\n}\n\nexport interface MockFinancialProviderOptions {\n paymentMethodTypes?: Array<{ name: string; transactionType?: string }>\n /** Pre-seed the in-memory store so the module renders populated (not the empty state). */\n seed?: MockFinancialSeed\n}\n\nexport function createMockFinancialProvider(options?: MockFinancialProviderOptions): FinancialDataProvider {\n const store = createStore(options)\n const tenantId = 'mock-tenant'\n\n function recalcInvoiceStatus(invoice: Invoice): void {\n const bills = store.movements.filter((m) => m.invoiceId === invoice.id && m.movementKind === 'bill')\n invoice.status = invoiceStatusOf(invoice, bills, today())\n invoice.updatedAt = now()\n }\n\n /** O carimbo cru: a linha foi conciliada, e contra quem. Sem orquestração. */\n function markReconciled(statementLineId: string, matchedMovementId?: string): void {\n const line = store.statementLines.find((l) => l.id === statementLineId)\n const internal = matchedMovementId\n ? store.movements.find((m) => m.id === matchedMovementId)\n : undefined\n if (line) {\n line.reconciledAt = now()\n line.matchedMovementId = matchedMovementId\n // A conta que a linha prova — é para onde «Ver conta» leva.\n line.matchedInvoiceId = internal?.invoiceId\n line.matchedCounterpartyName = internal?.invoiceId\n ? store.invoices.find((i) => i.id === internal.invoiceId)?.contactName\n : undefined\n line.updatedAt = now()\n }\n if (internal) { internal.reconciledAt = now(); internal.updatedAt = now() }\n }\n\n // `reconcileMovement` do facade é o carimbo, nunca o método público: o\n // público reentraria em si mesmo e a conta seria quitada duas vezes.\n function reconcileFacade(): ReconcileCapableProvider {\n return {\n createInvoice: (input) => provider.createInvoice(input),\n getMovements: (query) => provider.getMovements(query as never),\n payMovement: (input) => provider.payMovement(input as never),\n reconcileMovement: async ({ bankMovementId, matchedMovementId }) => {\n markReconciled(bankMovementId, matchedMovementId)\n },\n }\n }\n\n const provider: FinancialDataProvider = {\n // --- Invoices ---\n async getInvoices(query: InvoiceQuery): Promise<PaginatedResult<Invoice>> {\n let results = [...store.invoices]\n if (query.direction) results = results.filter((i) => i.direction === query.direction)\n if (query.status) results = results.filter((i) => matchesStatus(i.status, query.status as InvoiceStatus | InvoiceStatus[]))\n if (query.contactId) results = results.filter((i) => i.contactId === query.contactId)\n if (query.unitId) results = results.filter((i) => i.unitId === query.unitId)\n if (query.accountId) {\n const invoiceIds = new Set(store.invoiceItems.filter((item) => item.accountId === query.accountId).map((item) => item.invoiceId))\n results = results.filter((invoice) => invoiceIds.has(invoice.id))\n }\n if (query.costCenterId) {\n const invoiceIds = new Set(store.invoiceItems.filter((item) => item.costCenterId === query.costCenterId).map((item) => item.invoiceId))\n results = results.filter((invoice) => invoiceIds.has(invoice.id))\n }\n if (query.fiscalNumber) {\n const nf = query.fiscalNumber.toLowerCase()\n results = results.filter((i) => i.fiscalNumber?.toLowerCase().includes(nf))\n }\n if (query.bankAccountId) {\n const pagas = new Set(\n store.movements\n .filter((m) => m.bankAccountId === query.bankAccountId)\n .map((m) => m.invoiceId)\n .filter(Boolean) as string[],\n )\n results = results.filter((i) => pagas.has(i.id))\n }\n if (query.dateRange) {\n const from = query.dateRange.from.slice(0, 10)\n // Same contract as the Supabase provider: unpaid lines due before the window ride along.\n const overdueBefore = (i: Invoice) => query.includeOverdue === true\n && !!i.dueDate && i.dueDate.slice(0, 10) < from\n && (i.status === 'overdue' || i.status === 'partial' || (i.status === 'open' && i.dueDate.slice(0, 10) < today()))\n results = results.filter((i) => matchesDateRange(i.invoiceDate, query.dateRange) || overdueBefore(i))\n }\n if (query.search) {\n const s = query.search.toLowerCase()\n results = results.filter((i) =>\n i.contactName?.toLowerCase().includes(s) ||\n i.observations?.toLowerCase().includes(s) ||\n i.fiscalNumber?.toLowerCase().includes(s)\n )\n }\n results.sort((a, b) => b.createdAt.localeCompare(a.createdAt))\n return paginate(results, query.page, query.pageSize)\n },\n\n async getInvoiceById(id: string): Promise<Invoice | null> {\n return store.invoices.find((i) => i.id === id) ?? null\n },\n\n async getInvoiceItems(invoiceId: string): Promise<InvoiceItem[]> {\n return store.invoiceItems.filter((i) => i.invoiceId === invoiceId)\n },\n\n async createInvoice(input: CreateInvoiceInput): Promise<Invoice> {\n const invoiceId = uid()\n const totalAmount = invoiceTotal(input.items)\n const itemsSummary = itemsDescription(input.items)\n\n const invoice: Invoice = {\n id: invoiceId,\n direction: input.direction,\n invoiceDate: input.invoiceDate,\n fiscalNumber: input.fiscalNumber,\n totalAmount,\n paidAmount: 0,\n status: 'open',\n totalInstallments: input.installments.length || 1,\n contactId: input.contactId,\n contactName: input.contactName,\n cashSessionId: input.cashSessionId,\n unitId: input.unitId,\n observations: input.observations,\n itemsSummary: itemsSummary || undefined,\n metadata: input.metadata,\n tenantId,\n createdAt: now(),\n updatedAt: now(),\n }\n store.invoices.push(invoice)\n\n // Create items\n for (const itemInput of input.items) {\n const itemTotal = lineTotal(itemInput)\n const item: InvoiceItem = {\n id: uid(),\n invoiceId,\n itemKind: itemInput.itemKind,\n referenceId: itemInput.referenceId,\n description: itemInput.description,\n quantity: itemInput.quantity,\n unitPrice: itemInput.unitPrice,\n totalAmount: itemTotal,\n discount: itemInput.discount ?? 0,\n surcharge: itemInput.surcharge ?? 0,\n accountId: itemInput.accountId,\n costCenterId: itemInput.costCenterId,\n metadata: itemInput.metadata,\n createdAt: now(),\n }\n store.invoiceItems.push(item)\n }\n\n // Create installment movements\n for (const movInput of input.installments) {\n const movement: FinancialMovement = {\n id: uid(),\n invoiceId,\n direction: input.direction,\n movementKind: movInput.movementKind,\n amount: movInput.amount,\n paidAmount: 0,\n status: 'pending',\n dueDate: movInput.dueDate,\n installmentNumber: movInput.installmentNumber,\n paymentMethodId: movInput.paymentMethodId,\n bankAccountId: movInput.bankAccountId,\n notes: movInput.notes,\n metadata: movInput.metadata,\n tenantId,\n createdAt: now(),\n updatedAt: now(),\n }\n store.movements.push(movement)\n }\n\n return invoice\n },\n\n async updateInvoice(id: string, data: Partial<Invoice>): Promise<Invoice> {\n const invoice = store.invoices.find((i) => i.id === id)\n if (!invoice) throw new Error(`Invoice ${id} not found`)\n Object.assign(invoice, data, { updatedAt: now() })\n return invoice\n },\n\n async updateInstallment(id: string, data: { dueDate?: string; amount?: number; metadata?: Record<string, unknown> }): Promise<void> {\n const mov = store.movements.find((mv) => mv.id === id)\n if (!mov) return\n if (data.dueDate !== undefined) mov.dueDate = data.dueDate\n if (data.amount !== undefined) mov.amount = data.amount\n if (data.metadata !== undefined) mov.metadata = data.metadata\n },\n\n async replaceInvoiceItems(invoiceId: string, items: CreateInvoiceItemInput[]): Promise<void> {\n const invoice = store.invoices.find((i) => i.id === invoiceId)\n if (!invoice) throw new Error(`Invoice ${invoiceId} not found`)\n store.invoiceItems = store.invoiceItems.filter((it) => it.invoiceId !== invoiceId)\n for (const item of items) {\n store.invoiceItems.push({\n id: uid(),\n invoiceId,\n itemKind: item.itemKind,\n referenceId: item.referenceId,\n description: item.description,\n quantity: item.quantity,\n unitPrice: item.unitPrice,\n totalAmount: lineTotal(item),\n discount: item.discount ?? 0,\n surcharge: item.surcharge ?? 0,\n accountId: item.accountId,\n costCenterId: item.costCenterId,\n metadata: item.metadata,\n createdAt: now(),\n } as (typeof store.invoiceItems)[number])\n }\n // O total é a soma das linhas: gravar um sem o outro deixa a conta\n // somando um valor e cobrando outro.\n invoice.totalAmount = invoiceTotal(items)\n invoice.updatedAt = now()\n },\n\n async rescheduleInvoice(invoiceId: string, installments: Array<{ dueDate: string; amount: number; metadata?: Record<string, unknown> }>): Promise<void> {\n const invoice = store.invoices.find((i) => i.id === invoiceId)\n if (!invoice) throw new Error(`Invoice ${invoiceId} not found`)\n const old = store.movements.filter((mv) => mv.invoiceId === invoiceId && mv.movementKind === 'bill')\n assertReschedule(invoice, old, installments)\n // O que estava pendurado na parcela de número N volta para a parcela N.\n const carried = new Map(old.map((mv) => [mv.installmentNumber ?? 1, mv.metadata]))\n store.movements = store.movements.filter((mv) => !old.includes(mv))\n installments.forEach((inst, i) => {\n store.movements.push({\n id: uid(),\n invoiceId,\n direction: invoice.direction,\n movementKind: 'bill',\n amount: inst.amount,\n paidAmount: 0,\n status: 'pending',\n dueDate: inst.dueDate,\n installmentNumber: i + 1,\n metadata: inst.metadata ?? carried.get(i + 1),\n tenantId,\n createdAt: now(),\n updatedAt: now(),\n } as FinancialMovement)\n })\n },\n\n async cancelInvoice(input): Promise<void> {\n cancellationReason(input)\n const invoice = store.invoices.find((i) => i.id === input.invoiceId)\n if (!invoice) throw new Error(`Invoice ${input.invoiceId} not found`)\n invoice.status = 'cancelled'\n invoice.updatedAt = now()\n // Cancel all pending movements\n store.movements\n .filter((m) => m.invoiceId === input.invoiceId && m.status === 'pending')\n .forEach((m) => { m.status = 'cancelled'; m.updatedAt = now() })\n },\n\n // --- Movements ---\n async getMovements(query: MovementQuery): Promise<PaginatedResult<FinancialMovement>> {\n let results = [...store.movements]\n // `invoiceId` existe no contrato desde sempre e o mock o ignorava: quem\n // pedia as parcelas de UMA conta recebia as do store inteiro, e a\n // primeira da lista passava por \"a parcela desta fatura\". Foi assim que\n // o ajuste da conciliação quitou a conta errada.\n if (query.invoiceId) results = results.filter((m) => m.invoiceId === query.invoiceId)\n if (query.direction) results = results.filter((m) => m.direction === query.direction)\n if (query.status) results = results.filter((m) => matchesStatus(m.status, query.status as MovementStatus | MovementStatus[]))\n if (query.bankAccountId) results = results.filter((m) => m.bankAccountId === query.bankAccountId)\n if (query.cashSessionId) results = results.filter((m) => m.cashSessionId === query.cashSessionId)\n if (query.dateRange) results = results.filter((m) => matchesDateRange(m.dueDate, query.dateRange))\n results.sort((a, b) => a.dueDate.localeCompare(b.dueDate))\n return paginate(results, query.page, query.pageSize)\n },\n\n // O mock não guarda faturas no formato do read model; devolve a conta vazia\n // em vez de inventar números que a tela apresentaria como saldo do cliente.\n async getClientAccount(personId: string) {\n return { personId, contracted: 0, paid: 0, open: 0, invoices: [] }\n },\n\n async getCardReceivables() { return [] },\n\n async reverseMovement(movementId: string, reason: string): Promise<void> {\n const m = store.movements.find((x) => x.id === movementId)\n if (m) { m.status = 'cancelled'; m.notes = [m.notes, `Estorno: ${reason}`].filter(Boolean).join(' · ') }\n },\n\n async payMovement(input: PayMovementInput): Promise<FinancialMovement> {\n const bill = store.movements.find((m) => m.id === input.movementId)\n if (!bill) throw new Error(`Movement ${input.movementId} not found`)\n\n // Net card settlement: derive the processing/MDR fee from the payment method (credits only).\n const method = input.paymentMethodId ? store.paymentMethods.find((pm) => pm.id === input.paymentMethodId) : undefined\n const thisFee = paymentFee(input.amount, method?.discountValue ?? 0, bill.direction)\n\n // 1. Record the cash event as its OWN payment movement (one row per payment).\n const payment: FinancialMovement = {\n id: uid(),\n invoiceId: bill.invoiceId,\n direction: bill.direction,\n movementKind: 'payment',\n amount: input.amount,\n paidAmount: input.amount,\n feeAmount: thisFee,\n status: 'paid',\n settlesMovementId: bill.id,\n dueDate: bill.dueDate,\n paymentDate: input.paymentDate,\n installmentNumber: bill.installmentNumber,\n paymentMethodId: input.paymentMethodId,\n paymentMethodTypeId: input.paymentMethodTypeId,\n bankAccountId: input.bankAccountId,\n cashSessionId: input.cashSessionId,\n cardBrand: input.cardBrand,\n cardInstallments: input.cardInstallments,\n notes: input.notes,\n metadata: input.metadata,\n tenantId,\n createdAt: now(),\n updatedAt: now(),\n }\n store.movements.push(payment)\n\n // 2. Update the bill (obligation) cache: cumulative paid + status. Clear its cash\n // fields so it stops being a cash event (the payment row is now the cash event).\n bill.paidAmount = round2(bill.paidAmount + input.amount)\n bill.status = bill.paidAmount >= bill.amount ? 'paid' : 'partial'\n bill.paymentDate = undefined\n bill.bankAccountId = undefined\n bill.updatedAt = now()\n\n // Update bank account balance by the NET cash impact (credit nets the fee).\n if (input.bankAccountId) {\n const account = store.bankAccounts.find((a) => a.id === input.bankAccountId)\n if (account) {\n if (bill.direction === 'credit') {\n account.currentBalance = round2(account.currentBalance + (input.amount - thisFee))\n } else {\n account.currentBalance = round2(account.currentBalance - input.amount)\n }\n account.updatedAt = now()\n }\n }\n\n // 3. Recalculate invoice status from its bills\n if (bill.invoiceId) {\n const invoice = store.invoices.find((i) => i.id === bill.invoiceId)\n if (invoice) {\n const bills = store.movements.filter((m) => m.invoiceId === invoice.id && m.movementKind === 'bill')\n invoice.paidAmount = bills.reduce((sum, m) => sum + m.paidAmount, 0)\n recalcInvoiceStatus(invoice)\n }\n }\n\n return payment\n },\n\n async cancelMovement(id: string): Promise<void> {\n const movement = store.movements.find((m) => m.id === id)\n if (!movement) throw new Error(`Movement ${id} not found`)\n movement.status = 'cancelled'\n movement.updatedAt = now()\n },\n\n // --- Transfers (between accounts) ---\n async createTransfer(input: CreateTransferInput): Promise<TransferResult> {\n const transferId = uid()\n const [out, into] = transferLegs(input, transferId)\n const debitMovementId = uid()\n const creditMovementId = uid()\n const base = {\n movementKind: 'transfer' as const,\n amount: input.amount,\n paidAmount: input.amount,\n feeAmount: 0,\n status: 'paid' as const,\n dueDate: input.date,\n paymentDate: input.date,\n notes: input.notes,\n tenantId,\n createdAt: now(),\n updatedAt: now(),\n }\n store.movements.push({ ...base, id: debitMovementId, ...out })\n store.movements.push({ ...base, id: creditMovementId, ...into })\n // Reflect in stored balances.\n const from = store.bankAccounts.find((a) => a.id === input.fromAccountId)\n const to = store.bankAccounts.find((a) => a.id === input.toAccountId)\n if (from) { from.currentBalance = round2(from.currentBalance - input.amount); from.updatedAt = now() }\n if (to) { to.currentBalance = round2(to.currentBalance + input.amount); to.updatedAt = now() }\n return { transferId, debitMovementId, creditMovementId }\n },\n\n // --- Bank Accounts ---\n // Espelha a view da 113: só conta com ORIGEM ativa. Sem isso o mock diria\n // que o filtro funciona quando ele não filtra nada.\n async getStatementAccounts() {\n const comOrigem = new Set(store.statementSources.filter((o) => o.isActive).map((o) => o.accountId))\n return store.bankAccounts.filter((a) => comOrigem.has(a.id))\n },\n\n async getBankAccounts(): Promise<BankAccount[]> {\n return store.bankAccounts.filter((a) => a.isActive)\n },\n\n async getAccountsByIds(ids: string[]): Promise<BankAccount[]> {\n return store.bankAccounts.filter((a) => ids.includes(a.id))\n },\n\n async searchFinancialAccounts(query: string, limit = 20): Promise<BankAccount[]> {\n const term = query.trim().toLocaleLowerCase('pt-BR')\n if (term.length < 2) return []\n return store.bankAccounts\n .filter((account) => account.isActive && account.name.toLocaleLowerCase('pt-BR').includes(term))\n .sort((a, b) => a.name.localeCompare(b.name, 'pt-BR'))\n .slice(0, limit)\n },\n\n async createBankAccount(data: CreateBankAccountInput): Promise<BankAccount> {\n const account: BankAccount = {\n id: uid(),\n name: data.name,\n accountType: data.accountType,\n bankName: data.bankName,\n accountNumber: data.accountNumber,\n agencyNumber: data.agencyNumber,\n currentBalance: data.initialBalance ?? 0,\n initialBalance: data.initialBalance ?? 0,\n creditLimit: data.creditLimit,\n dueDay: data.dueDay,\n closingDay: data.closingDay,\n isActive: true,\n unitId: data.unitId,\n tenantId,\n createdAt: now(),\n updatedAt: now(),\n }\n store.bankAccounts.push(account)\n return account\n },\n\n async updateBankAccount(id: string, data: Partial<BankAccount>): Promise<BankAccount> {\n const account = store.bankAccounts.find((a) => a.id === id)\n if (!account) throw new Error(`Bank account ${id} not found`)\n Object.assign(account, data, { updatedAt: now() })\n return account\n },\n\n // --- Cash Sessions ---\n async getCashSessions(bankAccountId?: string): Promise<CashSession[]> {\n let results = [...store.cashSessions]\n if (bankAccountId) results = results.filter((s) => s.bankAccountId === bankAccountId)\n return results.sort((a, b) => b.openedAt.localeCompare(a.openedAt))\n },\n\n async getOpenSession(bankAccountId: string): Promise<CashSession | null> {\n return store.cashSessions.find((s) => s.bankAccountId === bankAccountId && s.status === 'open') ?? null\n },\n\n async openCashSession(input: OpenCashSessionInput): Promise<CashSession> {\n const account = store.bankAccounts.find((a) => a.id === input.bankAccountId)\n const session: CashSession = {\n id: uid(),\n bankAccountId: input.bankAccountId,\n bankAccountName: account?.name,\n status: 'open',\n openedAt: now(),\n openedByUserId: input.openedByUserId,\n openedByName: input.openedByName,\n openingBalance: input.openingBalance,\n unitId: input.unitId,\n tenantId,\n createdAt: now(),\n }\n store.cashSessions.push(session)\n return session\n },\n\n async closeCashSession(input: CloseCashSessionInput): Promise<CashSession> {\n const session = store.cashSessions.find((s) => s.id === input.sessionId)\n if (!session) throw new Error(`Cash session ${input.sessionId} not found`)\n\n const flow = sessionCashFlow(store.movements.filter((m) => m.cashSessionId === session.id && m.status === 'paid'))\n const { expectedBalance, difference } = closingDifference(session.openingBalance, flow, input.closingBalance)\n\n session.status = 'closed'\n session.closedAt = now()\n session.closedByUserId = input.closedByUserId\n session.closedByName = input.closedByName\n session.closingBalance = input.closingBalance\n session.expectedBalance = expectedBalance\n session.difference = difference\n session.notes = input.notes\n\n return session\n },\n\n async getCashSessionSummary(sessionId: string): Promise<CashSessionSummary> {\n const session = store.cashSessions.find((s) => s.id === sessionId)\n if (!session) throw new Error(`Cash session ${sessionId} not found`)\n return { session, ...sessionCashFlow(store.movements.filter((m) => m.cashSessionId === sessionId && m.status === 'paid')) }\n },\n\n // --- Payment Methods ---\n async getPaymentMethods(): Promise<PaymentMethod[]> {\n return store.paymentMethods.filter((pm) => pm.isActive)\n },\n\n async getPaymentMethodTypes(): Promise<PaymentMethodType[]> {\n return store.paymentMethodTypes.filter((t) => t.isActive)\n },\n\n // --- Chart of Accounts ---\n async getChartOfAccounts(): Promise<ChartOfAccountsNode[]> {\n return store.chartOfAccounts.filter((n) => n.isActive)\n },\n\n async resolveChartAccountRefs(refs: string[]): Promise<Record<string, string>> {\n const ids = new Set(store.chartOfAccounts.map((account) => account.id))\n return Object.fromEntries(refs.filter((ref) => ids.has(ref)).map((ref) => [ref, ref]))\n },\n\n async getCostCenters(): Promise<CostCenter[]> {\n return store.costCenters.filter((c) => c.isActive)\n },\n\n // --- Card Transactions ---\n async getCardTransactions(dateRange?: DateRange): Promise<CardTransaction[]> {\n let results = [...store.cardTransactions]\n if (dateRange) results = results.filter((t) => matchesDateRange(t.expectedDate, dateRange))\n return results.sort((a, b) => a.expectedDate.localeCompare(b.expectedDate))\n },\n\n // --- Statements (ERP extract: opening balance + realized cash + per-row net/fee) ---\n async getStatement(query: StatementQuery): Promise<StatementResult> {\n const consolidated = !query.bankAccountId\n const scopeAccounts = consolidated\n ? store.bankAccounts.filter((a) => a.isActive)\n : store.bankAccounts.filter((a) => a.id === query.bankAccountId)\n if (!consolidated && scopeAccounts.length === 0) return emptyStatement(query.bankAccountId)\n const accountIds = new Set(scopeAccounts.map((a) => a.id))\n const accountNameById = new Map(store.bankAccounts.map((a) => [a.id, a.name]))\n const initialSum = scopeAccounts.reduce((s, a) => s + a.initialBalance, 0)\n const invoiceById = (id?: string) => (id ? store.invoices.find((i) => i.id === id) : undefined)\n\n // Consolidated => all realized movements, including those with no bank account.\n const inScope = store.movements.filter((m) =>\n isRealized(m) && (consolidated || (m.bankAccountId && accountIds.has(m.bankAccountId))))\n\n const statement = buildStatement({\n openingBalance: ledgerBalance(initialSum, inScope.filter((m) => (m.paymentDate ?? '') < query.dateRange.from)),\n movements: inScope\n .filter((m) => matchesDateRange(m.paymentDate, query.dateRange))\n .sort((a, b) => (a.paymentDate ?? '').localeCompare(b.paymentDate ?? '') || a.createdAt.localeCompare(b.createdAt)),\n consolidated,\n accountNameOf: (id) => accountNameById.get(id),\n invoiceOf: (movement) => invoiceById(movement.invoiceId),\n })\n\n for (const e of statement.entries) {\n const mid = e.movement.matchedMovementId\n const mm = mid ? store.movements.find((m) => m.id === mid) : undefined\n if (!mm) continue\n const inv = invoiceById(mm.invoiceId)\n e.reconciledWith = {\n movementId: mm.id,\n description: mm.notes ?? undefined,\n invoiceId: mm.invoiceId,\n fiscalNumber: inv?.fiscalNumber,\n contactName: inv?.contactName,\n }\n }\n\n return {\n ...statement,\n accountId: query.bankAccountId,\n accountCurrentBalance: ledgerBalance(initialSum, inScope.filter((m) => (m.paymentDate ?? '') <= today())),\n }\n },\n\n async getDre(query: DreQuery): Promise<DreRow[]> {\n const rows: DreRow[] = []\n for (const account of store.chartOfAccounts.filter((candidate) => candidate.accountType === 'revenue' || candidate.accountType === 'expense')) {\n rows.push({\n accountId: account.id,\n accountCode: account.code,\n accountName: account.name,\n accountType: account.accountType as 'revenue' | 'expense',\n parentAccountId: account.parentId,\n statementCode: account.code,\n statementName: account.name,\n unclassified: false,\n amount: 0,\n discount: 0,\n lineCount: 0,\n })\n }\n for (const invoice of store.invoices.filter((candidate) =>\n candidate.invoiceDate.startsWith(String(query.year)) && (!query.unitId || candidate.unitId === query.unitId))) {\n for (const item of store.invoiceItems.filter((candidate) => candidate.invoiceId === invoice.id)) {\n const account = store.chartOfAccounts.find((candidate) => candidate.id === item.accountId)\n const accountType = invoice.direction === 'credit' ? 'revenue' : 'expense'\n rows.push({\n unitId: invoice.unitId,\n competenceMonth: `${invoice.invoiceDate.slice(0, 7)}-01`,\n accountId: account?.id,\n accountCode: account?.code,\n accountName: account?.name,\n accountType,\n parentAccountId: account?.parentId,\n statementCode: account?.accountType === accountType ? account.code : undefined,\n statementName: account?.accountType === accountType ? account.name : undefined,\n unclassified: !account || account.accountType !== accountType,\n amount: item.totalAmount,\n discount: item.discount,\n lineCount: 1,\n })\n }\n }\n return rows\n },\n\n // --- Summary ---\n async getSummary(dateRange?: DateRange): Promise<FinancialSummary> {\n const todayStr = today()\n return summarizeLedger({\n accounts: store.bankAccounts,\n movements: store.movements,\n today: todayStr,\n window: dateRange ?? trailingWindow(todayStr),\n })\n },\n\n // --- Recurring payables and receivables ---\n async getRecurringBills(direction) {\n return store.recurringBills\n .filter((bill) => bill.direction === direction)\n .sort((a, b) => Number(b.isActive) - Number(a.isActive) || a.description.localeCompare(b.description))\n },\n\n async saveRecurringBill(input: SaveRecurringBillInput) {\n const timestamp = now()\n const existing = input.id ? store.recurringBills.find((bill) => bill.id === input.id) : undefined\n const bill: RecurringBill = {\n id: existing?.id ?? uid(),\n direction: input.direction,\n description: input.description.trim(),\n counterpartyPersonId: input.counterpartyPersonId,\n counterpartyName: existing?.counterpartyName,\n amount: round2(input.amount),\n items: input.items.map((item) => ({ ...item })),\n unitId: input.unitId || null,\n chartAccountId: input.chartAccountId || null,\n costCenterId: input.costCenterId || null,\n frequency: input.frequency,\n dueDay: input.dueDay,\n startsOn: input.startsOn,\n endsOn: input.endsOn || null,\n isActive: input.isActive ?? existing?.isActive ?? true,\n notes: input.notes?.trim() || null,\n createdAt: existing?.createdAt ?? timestamp,\n updatedAt: timestamp,\n }\n if (existing) Object.assign(existing, bill)\n else store.recurringBills.push(bill)\n return bill\n },\n\n async updateRecurringBill(id, patch) {\n const bill = store.recurringBills.find((candidate) => candidate.id === id)\n if (!bill) throw new Error('Recurring bill not found')\n if (patch.isActive !== undefined) bill.isActive = patch.isActive\n if (patch.endsOn !== undefined) bill.endsOn = patch.endsOn\n bill.updatedAt = now()\n },\n\n async runRecurring() {\n return { created: 0, total: 0 }\n },\n\n // --- Conciliação Bancária ---\n // Espelha o provider real: a linha do extrato mora em `store.statementLines`,\n // não em `store.movements`. O mock tinha a linha como movimento e por isso\n // passava verde sobre o defeito que o banco recusava (migration 112).\n async importBankTransactions(input) {\n let imported = 0, duplicates = 0\n for (const line of input.lines) {\n const key = `${line.externalSource}:${line.externalId}`\n if (store.statementLines.some((l) => `${l.externalSource}:${l.externalId}` === key)) { duplicates++; continue }\n store.statementLines.push({\n ...line,\n id: uid(),\n amount: Math.abs(line.amount),\n bankAccountId: line.bankAccountId ?? input.bankAccountId,\n providerDeleted: false,\n createdAt: now(),\n updatedAt: now(),\n })\n imported++\n }\n return { imported, duplicates }\n },\n\n async getStatementLines(query) {\n let results = store.statementLines.filter((l) => !l.providerDeleted)\n if (query?.bankAccountId) results = results.filter((l) => l.bankAccountId === query.bankAccountId)\n if (query?.dateRange) results = results.filter((l) => matchesDateRange(l.date, query.dateRange))\n if (query?.direction) results = results.filter((l) => l.direction === query.direction)\n if (query?.status === 'reconciled') results = results.filter((l) => !!l.reconciledAt)\n else if (query?.status === 'pending') results = results.filter((l) => !l.reconciledAt)\n const term = (query?.search ?? '').trim().toLocaleLowerCase('pt-BR')\n if (term) {\n const casa = (v?: string) => (v ?? '').toLocaleLowerCase('pt-BR').includes(term)\n results = results.filter((l) =>\n casa(l.description) || casa(l.counterpartyName) || casa(l.counterpartyDocument)\n || casa(l.document) || casa(l.code) || casa(l.category)\n || casa(l.transactionType) || casa(l.externalId))\n }\n results = [...results].sort((a, b) => b.date.localeCompare(a.date))\n const { page, pageSize } = statementLinesPage(query)\n const rows = results.slice((page - 1) * pageSize, page * pageSize)\n return { rows, total: results.length, page, pageSize, ...pageTotals(rows) }\n },\n\n async getUnreconciled(query) {\n let results = store.statementLines.filter((l) => !l.reconciledAt && !l.providerDeleted)\n if (query?.bankAccountId) results = results.filter((l) => l.bankAccountId === query.bankAccountId)\n if (query?.dateRange) results = results.filter((l) => matchesDateRange(l.date, query.dateRange))\n return [...results].sort((a, b) => b.date.localeCompare(a.date))\n },\n\n async suggestReconciliation(statementLineId) {\n const line = store.statementLines.find((l) => l.id === statementLineId)\n if (!line) return []\n const tol = candidateTolerance(line.amount)\n return store.movements\n .filter((m) => !m.externalSource && !m.reconciledAt && m.direction === line.direction\n && Math.abs(m.amount - line.amount) <= tol)\n .map((m) => ({\n movement: m,\n invoice: m.invoiceId ? store.invoices.find((i) => i.id === m.invoiceId) : undefined,\n score: candidateScore(line, m),\n }))\n .sort((a, b) => b.score - a.score)\n .slice(0, 25)\n },\n\n async searchReconciliationTargets(statementLineId, query) {\n const line = store.statementLines.find((l) => l.id === statementLineId)\n if (!line) return { data: [], hasMore: false }\n const status = query.status ?? 'all'\n const termo = query.search?.trim().toLocaleLowerCase('pt-BR')\n const rows = store.movements\n .filter((m) => !m.externalSource && !m.reconciledAt && m.direction === line.direction)\n .filter((m) => m.status !== 'cancelled')\n .filter((m) => {\n const paga = m.movementKind === 'payment' || m.status === 'paid'\n return status === 'all' || (status === 'paid' ? paga : !paga)\n })\n .filter((m) => !query.dueFrom || (m.dueDate ?? '') >= query.dueFrom)\n .filter((m) => !query.dueTo || (m.dueDate ?? '') <= query.dueTo)\n .filter((m) => query.amountMin == null || m.amount >= query.amountMin)\n .filter((m) => query.amountMax == null || m.amount <= query.amountMax)\n .map((m) => ({ movement: m, invoice: m.invoiceId ? store.invoices.find((i) => i.id === m.invoiceId) : undefined }))\n .filter(({ movement, invoice }) => !termo\n || `${invoice?.contactName ?? ''} ${invoice?.fiscalNumber ?? ''} ${movement.notes ?? ''}`.toLocaleLowerCase('pt-BR').includes(termo))\n .sort((a, b) => (a.movement.dueDate ?? '').localeCompare(b.movement.dueDate ?? ''))\n const pageSize = query.pageSize ?? 50\n const start = ((query.page ?? 1) - 1) * pageSize\n return {\n data: rows.slice(start, start + pageSize).map((c) => ({ ...c, score: 0 })),\n hasMore: rows.length > start + pageSize,\n }\n },\n\n // A mesma cabeça da conciliação de verdade (match-statement), sobre a\n // memória: valor, nome e data, e um lançamento por linha.\n async suggestReconciliationBatch(lines) {\n const contexto = new Map<string, MovementContext>()\n for (const movement of store.movements) {\n const invoice = movement.invoiceId ? store.invoices.find((i) => i.id === movement.invoiceId) : undefined\n if (invoice) contexto.set(movement.id, { contactName: invoice.contactName, invoice })\n }\n const candidatos = store.movements.filter((m) => !m.externalSource && !m.reconciledAt)\n return matchStatementLines(lines, candidatos, contexto)\n },\n\n async reconcileMovement(input) {\n // `settle` quita a conta alvo antes de amarrar — o caminho `link` do V1.\n // Sem `mode`, a linha só é marcada: é o `link_paid`, e é o padrão porque\n // é o comportamento que esta tela sempre teve.\n if (input.mode === 'settle' && input.matchedMovementId) {\n const line = store.statementLines.find((l) => l.id === input.bankMovementId)\n if (!line) throw new Error('Linha do extrato não encontrada')\n const alvo = store.movements.find((m) => m.id === input.matchedMovementId)\n if (!alvo) throw new Error('Lançamento não encontrado')\n await runReconcileLink(\n reconcileFacade(),\n toReconcileLine(line),\n {\n movementId: alvo.id,\n mode: 'settle',\n openAmount: openAmount(alvo),\n },\n { payment: input.payment, adjustments: input.adjustments, partial: input.partial },\n )\n return\n }\n markReconciled(input.bankMovementId, input.matchedMovementId)\n },\n\n async reconcileAsTransfer(input) {\n const line = store.statementLines.find((l) => l.id === input.bankMovementId)\n if (!line) throw new Error('Linha do extrato não encontrada')\n const transfer = await provider.createTransfer(transferForStatementLine(toReconcileLine(line), input))\n await provider.reconcileMovement!({ bankMovementId: input.bankMovementId, matchedMovementId: statementLegOf(line, transfer) })\n return transfer\n },\n\n // «Lançar como conta». A conta nasce classificada, é quitada contra a conta\n // do extrato, e a linha passa a ser a prova dela. É o caminho que faz o\n // extrato BATER: sem ele, uma linha sem contrapartida fica marcada como\n // conciliada e o dinheiro continua fora do livro.\n async reconcileAsBill(input) {\n const line = store.statementLines.find((l) => l.id === input.bankMovementId)\n if (!line) throw new Error('Linha do extrato não encontrada')\n const { invoiceId } = await runReconcileAsBill(reconcileFacade(), toReconcileLine(line), input)\n const invoice = store.invoices.find((i) => i.id === invoiceId)\n if (!invoice) throw new Error('A conta não foi criada')\n return invoice\n },\n\n async unreconcileMovement(statementLineId) {\n const line = store.statementLines.find((l) => l.id === statementLineId)\n if (!line) return\n const matchedId = line.matchedMovementId\n line.reconciledAt = undefined; line.matchedMovementId = undefined; line.updatedAt = now()\n if (matchedId) {\n const internal = store.movements.find((m) => m.id === matchedId)\n if (internal) { internal.reconciledAt = undefined; internal.updatedAt = now() }\n }\n },\n\n // --- Notas fiscais (NF-e / NFC-e / NFS-e) ---\n // Os vales-presente moram na tabela da loja, que não existe em memória.\n // Responder \"não instalado\" faz a tela se explicar; deixar o método fora\n // faria ela explodir com um TypeError que não diz nada a ninguém.\n async giftCardsEnabled(): Promise<boolean> {\n return false\n },\n\n async getNotas(query: NotaFiscalQuery): Promise<PaginatedResult<NotaFiscal>> {\n let list = [...store.notas].sort((a, b) => b.createdAt.localeCompare(a.createdAt))\n if (query.status) list = list.filter((n) => matchesStatus(n.status, query.status))\n if (query.model) list = list.filter((n) => n.model === query.model)\n if (query.orderId) list = list.filter((n) => n.orderId === query.orderId)\n if (query.search) {\n const q = query.search.toLowerCase()\n list = list.filter((n) => (n.number ?? '').toLowerCase().includes(q) || (n.contactName ?? '').toLowerCase().includes(q))\n }\n return paginate(list, query.page, query.pageSize)\n },\n\n async getNotaById(id: string): Promise<NotaFiscal | null> {\n return store.notas.find((n) => n.id === id) ?? null\n },\n\n async createNota(input: CreateNotaFiscalInput): Promise<NotaFiscal> {\n const nota: NotaFiscal = {\n id: uid(),\n tenantId: 'mock-tenant',\n model: input.model ?? 'nfe',\n status: 'draft',\n number: null,\n series: input.series ?? null,\n orderId: input.orderId,\n contactId: input.contactId,\n contactName: input.contactName,\n totalAmount: input.totalAmount,\n observations: input.observations,\n createdAt: now(),\n updatedAt: now(),\n }\n store.notas.unshift(nota)\n return nota\n },\n\n async updateNota(id: string, patch: Partial<NotaFiscal>): Promise<NotaFiscal> {\n const nota = store.notas.find((n) => n.id === id)\n if (!nota) throw new Error('Nota fiscal not found')\n Object.assign(nota, patch, { updatedAt: now() })\n return nota\n },\n\n async issueNota(id: string): Promise<NotaFiscal> {\n const nota = store.notas.find((n) => n.id === id)\n if (!nota) throw new Error('Nota fiscal not found')\n const issuedCount = store.notas.filter((n) => n.status === 'issued').length\n nota.status = 'issued'\n nota.number = String(issuedCount + 1).padStart(6, '0')\n nota.series = nota.series ?? '1'\n nota.issuedAt = now()\n nota.emissor = 'manual'\n nota.updatedAt = now()\n return nota\n },\n\n async cancelNota(id: string, reason?: string): Promise<NotaFiscal> {\n const nota = store.notas.find((n) => n.id === id)\n if (!nota) throw new Error('Nota fiscal not found')\n nota.status = 'cancelled'\n nota.errorMessage = reason\n nota.updatedAt = now()\n return nota\n },\n }\n\n return provider\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../src/data/mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAA0B,MAAM,mBAAmB,CAAA;AAO5E,OAAO,EAEiD,KAAK,OAAO,EAAE,KAAK,WAAW,EACrF,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAA0B,KAAK,iBAAiB,EAAkE,MAAM,oBAAoB,CAAA;AAEnJ,OAAO,KAAK,EAAE,aAAa,EAAqB,MAAM,0BAA0B,CAAA;AAMhF,OAAO,KAAK,EAAE,aAAa,EAA0B,MAAM,0BAA0B,CAAA;AAKrF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAkIvD;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAA;IAC5B,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;IACpB,YAAY,CAAC,EAAE,WAAW,EAAE,CAAA;IAC5B,SAAS,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAC/B,cAAc,CAAC,EAAE,aAAa,EAAE,CAAA;IAChC,cAAc,CAAC,EAAE,aAAa,EAAE,CAAA;CACjC;AAED,MAAM,WAAW,4BAA4B;IAC3C,kBAAkB,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACtE,0FAA0F;IAC1F,IAAI,CAAC,EAAE,iBAAiB,CAAA;CACzB;AAED,wBAAgB,2BAA2B,CAAC,OAAO,CAAC,EAAE,4BAA4B,GAAG,qBAAqB,CA84BzG"}
1
+ {"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../src/data/mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAA0B,MAAM,mBAAmB,CAAA;AAO5E,OAAO,EAEiD,KAAK,OAAO,EAAE,KAAK,WAAW,EACrF,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAA0B,KAAK,iBAAiB,EAAkE,MAAM,oBAAoB,CAAA;AAEnJ,OAAO,KAAK,EAAE,aAAa,EAAqB,MAAM,0BAA0B,CAAA;AAMhF,OAAO,KAAK,EAAE,aAAa,EAA0B,MAAM,0BAA0B,CAAA;AAKrF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAkIvD;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAA;IAC5B,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;IACpB,YAAY,CAAC,EAAE,WAAW,EAAE,CAAA;IAC5B,SAAS,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAC/B,cAAc,CAAC,EAAE,aAAa,EAAE,CAAA;IAChC,cAAc,CAAC,EAAE,aAAa,EAAE,CAAA;CACjC;AAED,MAAM,WAAW,4BAA4B;IAC3C,kBAAkB,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACtE,0FAA0F;IAC1F,IAAI,CAAC,EAAE,iBAAiB,CAAA;CACzB;AAED,wBAAgB,2BAA2B,CAAC,OAAO,CAAC,EAAE,4BAA4B,GAAG,qBAAqB,CAq5BzG"}
package/dist/data/mock.js CHANGED
@@ -1,9 +1,9 @@
1
- export { createMockFinancialProvider } from '../chunk-UERJA7QH.js';
1
+ export { createMockFinancialProvider } from '../chunk-UXALK7CT.js';
2
2
  import '../chunk-T7WIM2V7.js';
3
3
  import '../chunk-ZFUQBYBG.js';
4
4
  import '../chunk-HJPUHTI2.js';
5
5
  import '../chunk-YUNLQYOZ.js';
6
- import '../chunk-7HISDBUG.js';
6
+ import '../chunk-5RMPZIMO.js';
7
7
  import '../chunk-4GXBOEI3.js';
8
8
  import '../chunk-56NQHYL7.js';
9
9
  import '../chunk-FNXIAIUZ.js';
@@ -1,3 +1,18 @@
1
1
  import type { FinancialDataProvider } from './provider';
2
+ /**
3
+ * Contas cujas LINHAS batem com o plano de contas / centro de custo pedidos.
4
+ *
5
+ * Lê a coluna (plg_financial_invoice_items), não o metadata: a classificação
6
+ * saiu do JSONB quando a conta deixou de ser uma order. Quem tem dado antigo
7
+ * no metadata cai no segundo braço.
8
+ */
9
+ /**
10
+ * The OR groups of the invoice-line list, as ONE PostgREST `or` value.
11
+ *
12
+ * PostgREST keeps only one `or=` parameter per request, silently, so every
13
+ * group must be ANDed inside a single one: `or=(and(or(A,B),or(C,D)))`. One
14
+ * group stays flat (`A,B`), which is what the list sent before groups nested.
15
+ */
16
+ export declare function invoiceLineOrFilter(groups: string[][]): string | undefined;
2
17
  export declare function createSupabaseFinancialProvider(): FinancialDataProvider;
3
18
  //# sourceMappingURL=supabase.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"supabase.d.ts","sourceRoot":"","sources":["../../src/data/supabase.ts"],"names":[],"mappings":"AA0CA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AA8XvD,wBAAgB,+BAA+B,IAAI,qBAAqB,CAihGvE"}
1
+ {"version":3,"file":"supabase.d.ts","sourceRoot":"","sources":["../../src/data/supabase.ts"],"names":[],"mappings":"AA0CA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AA0KvD;;;;;;GAMG;AACH;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,GAAG,SAAS,CAK1E;AA+MD,wBAAgB,+BAA+B,IAAI,qBAAqB,CAwhGvE"}
@@ -1,11 +1,11 @@
1
- export { createSupabaseFinancialProvider } from '../chunk-2XWEZXFT.js';
1
+ export { createSupabaseFinancialProvider, invoiceLineOrFilter } from '../chunk-RI4IUJS4.js';
2
2
  import '../chunk-J7BWATQU.js';
3
3
  import '../chunk-4S5GK776.js';
4
4
  import '../chunk-IP5YH4S5.js';
5
5
  import '../chunk-ZFUQBYBG.js';
6
6
  import '../chunk-HJPUHTI2.js';
7
7
  import '../chunk-YUNLQYOZ.js';
8
- import '../chunk-7HISDBUG.js';
8
+ import '../chunk-5RMPZIMO.js';
9
9
  import '../chunk-4GXBOEI3.js';
10
10
  import '../chunk-56NQHYL7.js';
11
11
  import '../chunk-FNXIAIUZ.js';
@@ -161,6 +161,14 @@ export interface InvoiceQuery {
161
161
  fiscalNumber?: string;
162
162
  /** The account the money left from or landed in. */
163
163
  bankAccountId?: string;
164
+ /**
165
+ * With `dateRange`: also return the unpaid lines (overdue or partially paid)
166
+ * that fell due BEFORE the range starts. A month window otherwise hides the
167
+ * debt that is most urgent — the bill from last month that nobody paid.
168
+ */
169
+ includeOverdue?: boolean;
170
+ /** `due` (default): soonest due first — a queue. `recent`: newest entered first. */
171
+ sort?: 'due' | 'recent';
164
172
  page?: number;
165
173
  pageSize?: number;
166
174
  }
@@ -1 +1 @@
1
- {"version":3,"file":"invoice.d.ts","sourceRoot":"","sources":["../../src/domain/invoice.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"invoice.d.ts","sourceRoot":"","sources":["../../src/domain/invoice.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export { assertReschedule, availableInvoiceItemTypes, cancellationReason, hasReceivedPayment, invoiceOpensForEditing, invoiceStatusOf, invoiceTotal, itemsDescription, lineTotal, listsProvisioned, scheduleCloses, splitInstallments, summarizeInvoiceLines, withProvisioned } from '../chunk-7HISDBUG.js';
1
+ export { assertReschedule, availableInvoiceItemTypes, cancellationReason, hasReceivedPayment, invoiceOpensForEditing, invoiceStatusOf, invoiceTotal, itemsDescription, lineTotal, listsProvisioned, scheduleCloses, splitInstallments, summarizeInvoiceLines, withProvisioned } from '../chunk-5RMPZIMO.js';
2
2
  import '../chunk-XVELDCSL.js';
3
3
  //# sourceMappingURL=invoice.js.map
4
4
  //# sourceMappingURL=invoice.js.map
package/dist/store.js CHANGED
@@ -1,13 +1,13 @@
1
- import { createMockFinancialProvider } from './chunk-UERJA7QH.js';
1
+ import { createMockFinancialProvider } from './chunk-UXALK7CT.js';
2
2
  import './chunk-T7WIM2V7.js';
3
- import { createSupabaseFinancialProvider } from './chunk-2XWEZXFT.js';
3
+ import { createSupabaseFinancialProvider } from './chunk-RI4IUJS4.js';
4
4
  import './chunk-J7BWATQU.js';
5
5
  import './chunk-4S5GK776.js';
6
6
  import './chunk-IP5YH4S5.js';
7
7
  import './chunk-ZFUQBYBG.js';
8
8
  import './chunk-HJPUHTI2.js';
9
9
  import './chunk-YUNLQYOZ.js';
10
- import { listsProvisioned, withProvisioned } from './chunk-7HISDBUG.js';
10
+ import { listsProvisioned, withProvisioned } from './chunk-5RMPZIMO.js';
11
11
  import './chunk-4GXBOEI3.js';
12
12
  import './chunk-56NQHYL7.js';
13
13
  import './chunk-FNXIAIUZ.js';
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "fayz": {
4
4
  "status": "beta"
5
5
  },
6
- "version": "0.1.6",
6
+ "version": "0.1.8",
7
7
  "description": "Fayz SDK financial context — invoices, payments, accounts and reconciliation: the domain rules, the repository port and its adapters, and the store",
8
8
  "type": "module",
9
9
  "sideEffects": false,
@@ -22,8 +22,8 @@
22
22
  "zustand": "^4.5.0 || ^5.0.0"
23
23
  },
24
24
  "dependencies": {
25
- "@fayz-ai/core": "^0.57.0",
26
- "@fayz-ai/ui": "^0.57.0"
25
+ "@fayz-ai/core": "^0.59.0",
26
+ "@fayz-ai/ui": "^0.59.0"
27
27
  },
28
28
  "devDependencies": {
29
29
  "@supabase/supabase-js": "^2.45.0",