@fayz-ai/plugin-financial 0.25.9 → 0.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/CashRegistersView-2G7DTIAA.js +4 -0
  2. package/dist/CashRegistersView-2G7DTIAA.js.map +1 -0
  3. package/dist/CommissionRulesView-2RW4ZCDT.js +878 -0
  4. package/dist/CommissionRulesView-2RW4ZCDT.js.map +1 -0
  5. package/dist/FinancialGeneralSettings-WXJOCJPZ.js +3 -0
  6. package/dist/FinancialGeneralSettings-WXJOCJPZ.js.map +1 -0
  7. package/dist/FinancialPage-PGODULVH.js +6484 -0
  8. package/dist/FinancialPage-PGODULVH.js.map +1 -0
  9. package/dist/PersonStatementWidget-ULXXXYZ4.js +214 -0
  10. package/dist/PersonStatementWidget-ULXXXYZ4.js.map +1 -0
  11. package/dist/chunk-7VKJLBYY.js +1736 -0
  12. package/dist/chunk-7VKJLBYY.js.map +1 -0
  13. package/dist/chunk-CNXAVGSW.js +13 -0
  14. package/dist/chunk-CNXAVGSW.js.map +1 -0
  15. package/dist/chunk-K37Q7SKX.js +4340 -0
  16. package/dist/chunk-K37Q7SKX.js.map +1 -0
  17. package/dist/chunk-MGDAJLUQ.js +823 -0
  18. package/dist/chunk-MGDAJLUQ.js.map +1 -0
  19. package/dist/chunk-POYZFEAN.js +64 -0
  20. package/dist/chunk-POYZFEAN.js.map +1 -0
  21. package/dist/components/BatchClassify.d.ts +26 -0
  22. package/dist/components/BatchClassify.d.ts.map +1 -0
  23. package/dist/components/CashSessionHeaderControl.d.ts.map +1 -1
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +4944 -45345
  26. package/dist/index.js.map +1 -1
  27. package/dist/migrations/main.browser.js +143 -0
  28. package/dist/migrations/main.browser.js.map +1 -0
  29. package/dist/migrations/main.js +26230 -0
  30. package/dist/migrations/main.js.map +1 -0
  31. package/dist/payable-agent-TCKHUAQG.js +3 -0
  32. package/dist/payable-agent-TCKHUAQG.js.map +1 -0
  33. package/dist/views/ReconciliationView.d.ts.map +1 -1
  34. package/package.json +11 -5
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/CommissionRuleDialog.tsx","../src/components/CommissionFunctionsDialog.tsx","../src/views/CommissionRulesView.tsx"],"names":["React","jsx","Modal","jsxs","ModalContent","ModalHeader","ModalTitle","ModalDescription","ModalBody","Field","Input","Checkbox","Button","Trash2","Plus","ModalFooter","UNENFORCED_CRITERIA","MultiSelect"],"mappings":"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","file":"CommissionRulesView-2RW4ZCDT.js","sourcesContent":["import React from 'react'\nimport { Info, Plus, Trash2 } from 'lucide-react'\nimport {\n Modal, ModalContent, ModalHeader, ModalTitle, ModalDescription, ModalBody, ModalFooter,\n Button, Input, Checkbox, MultiSelect, Textarea,\n} from '@fayz-ai/ui'\nimport type { FinancialDataProvider } from '@fayz-ai/financial/data/provider'\nimport type { CommissionRule, CommissionCatalogs, CommissionCriteriaType, CommissionRuleCriteria } from '@fayz-ai/financial/domain/commission'\nimport { UNENFORCED_CRITERIA } from '@fayz-ai/financial/domain/commission'\n\n// ---------------------------------------------------------------------------\n// QUANDO a regra se aplica.\n//\n// Separado do \"quem recebe e quanto\" porque é assim no V1, e a separação é boa:\n// mexer no percentual de todo mundo é uma tarefa; mexer em quais atendimentos a\n// regra pega é outra, e quem faz uma raramente quer a outra aberta junto.\n// ---------------------------------------------------------------------------\n\nconst WEEKDAYS = [\n { value: 1, label: 'Segunda' }, { value: 2, label: 'Terça' }, { value: 3, label: 'Quarta' },\n { value: 4, label: 'Quinta' }, { value: 5, label: 'Sexta' }, { value: 6, label: 'Sábado' },\n { value: 0, label: 'Domingo' },\n]\n\ninterface TimeRange { from: string; to: string }\n\nexport interface CommissionRuleDialogProps {\n rule: CommissionRule | null\n catalogs: CommissionCatalogs\n hasDefault: boolean\n provider: FinancialDataProvider\n onClose: () => void\n onSaved: () => void | Promise<void>\n}\n\nexport function CommissionRuleDialog({\n rule, catalogs, hasDefault, provider, onClose, onSaved,\n}: CommissionRuleDialogProps) {\n const [name, setName] = React.useState(rule?.name ?? '')\n const [description, setDescription] = React.useState(rule?.description ?? '')\n const [priority, setPriority] = React.useState(String(rule?.priority ?? 1))\n const [isActive, setIsActive] = React.useState(rule?.isActive ?? true)\n // Sem padrão na casa, a primeira regra já nasce marcada: é o que falta para\n // que nada fique sem comissionar, e deixar a caixa desmarcada empurra o\n // problema para o fechamento.\n const [isDefault, setIsDefault] = React.useState(rule?.isDefault ?? !hasDefault)\n const [saving, setSaving] = React.useState(false)\n const [error, setError] = React.useState<string | null>(null)\n\n const initial = React.useMemo(() => {\n const get = (t: CommissionCriteriaType, key = 'ids') =>\n (rule?.criteria.find((c) => c.criteriaType === t)?.criteriaValue?.[key] as any[] | undefined) ?? []\n return {\n services: get('service') as string[],\n categories: get('category') as string[],\n professionals: get('professional') as string[],\n units: get('unit') as string[],\n weekdays: get('weekday', 'days') as number[],\n ranges: get('time_range', 'ranges') as TimeRange[],\n }\n }, [rule])\n\n const [services, setServices] = React.useState<string[]>(initial.services)\n const [categories, setCategories] = React.useState<string[]>(initial.categories)\n const [professionals, setProfessionals] = React.useState<string[]>(initial.professionals)\n const [units, setUnits] = React.useState<string[]>(initial.units)\n const [weekdays, setWeekdays] = React.useState<number[]>(initial.weekdays)\n const [ranges, setRanges] = React.useState<TimeRange[]>(initial.ranges)\n\n const criteriaCount =\n [services, categories, professionals, units].filter((a) => a.length > 0).length +\n (weekdays.length ? 1 : 0) + (ranges.length ? 1 : 0)\n\n async function handleSave() {\n if (!name.trim()) { setError('A regra precisa de um nome.'); return }\n setSaving(true)\n setError(null)\n try {\n const criteria: CommissionRuleCriteria[] = [\n { criteriaType: 'service', criteriaValue: { ids: services } },\n { criteriaType: 'category', criteriaValue: { ids: categories } },\n { criteriaType: 'professional', criteriaValue: { ids: professionals } },\n { criteriaType: 'unit', criteriaValue: { ids: units } },\n { criteriaType: 'weekday', criteriaValue: { days: weekdays } },\n // Faixa pela metade não é faixa: gravá-la tornaria a regra mais\n // específica e restringiria por um horário que ninguém terminou de\n // escrever.\n { criteriaType: 'time_range', criteriaValue: { ranges: ranges.filter((r) => r.from && r.to) } },\n ]\n await provider.saveCommissionRule?.({\n id: rule?.id,\n name: name.trim(),\n description: description.trim() || null,\n priority: Number(priority) || 0,\n isDefault,\n isActive,\n criteria,\n })\n await onSaved()\n } catch (e: any) {\n setError(e?.message ?? String(e))\n } finally {\n setSaving(false)\n }\n }\n\n return (\n <Modal open onOpenChange={(o) => { if (!o) onClose() }}>\n <ModalContent size=\"2xl\" noPadding className=\"gap-0\">\n <ModalHeader className=\"border-b px-5 py-4\">\n <ModalTitle className=\"text-base\">\n {rule ? 'Editar regra de comissão' : 'Nova regra de comissão'}\n </ModalTitle>\n <ModalDescription className=\"text-xs\">\n {criteriaCount === 0\n ? 'Sem critérios, esta regra vale para todos os atendimentos.'\n : `${criteriaCount} critério${criteriaCount > 1 ? 's' : ''} — quanto mais casarem, mais forte a regra.`}\n </ModalDescription>\n </ModalHeader>\n\n <ModalBody className=\"fz-container px-5 py-4\">\n <div className=\"space-y-5\">\n {/* ── Identificação ─────────────────────────────────────────── */}\n <div className=\"space-y-3\">\n <div>\n <label className=\"text-[10px] font-medium uppercase text-muted-foreground\">Nome da regra</label>\n <Input value={name} onChange={(e) => setName(e.target.value)}\n placeholder=\"Ex.: Ultrassom 15%\" className=\"mt-0.5\" />\n </div>\n\n <div>\n <label className=\"text-[10px] font-medium uppercase text-muted-foreground\">Descrição</label>\n <Textarea\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n rows={2}\n placeholder=\"O que esta regra faz, em uma frase.\"\n className=\"mt-0.5 resize-none px-2 py-1.5 text-xs\"\n />\n </div>\n\n <div className=\"fz-fields fz-fields-2\">\n <div>\n <label className=\"text-[10px] font-medium uppercase text-muted-foreground\">Prioridade</label>\n <Input type=\"number\" value={priority} onChange={(e) => setPriority(e.target.value)} className=\"mt-0.5\" />\n <p className=\"mt-1 text-[10px] text-muted-foreground\">\n Só desempata quando duas regras casam o mesmo número de critérios (maior vence).\n </p>\n </div>\n <div className=\"flex flex-col gap-2 pt-4\">\n <label className=\"flex items-center gap-2 text-xs\">\n <Checkbox checked={isActive} onChange={setIsActive} /> Regra ativa\n </label>\n <label className=\"flex items-center gap-2 text-xs\">\n <Checkbox checked={isDefault} onChange={setIsDefault} /> Regra padrão da casa\n </label>\n {isDefault && (\n <p className=\"text-[10px] text-muted-foreground\">\n Vale quando nenhuma outra casa. Os critérios abaixo deixam de importar.\n </p>\n )}\n </div>\n </div>\n </div>\n\n {/* ── Critérios ─────────────────────────────────────────────── */}\n {!isDefault && (\n <div className=\"space-y-3 border-t pt-4\">\n <div>\n <h4 className=\"text-sm font-semibold\">Critérios de aplicação</h4>\n <p className=\"text-xs text-muted-foreground\">\n Critério vazio vale para todos. Quanto mais critérios casarem com o\n atendimento, mais específica — e mais forte — a regra.\n </p>\n </div>\n\n <div className=\"fz-fields fz-fields-2\">\n <Field label=\"Serviços\">\n <MultiSelect allLabel=\"Todos os serviços\" value={services} onChange={setServices}\n options={catalogs.services.map((s) => ({ value: s.id, label: s.name }))} />\n </Field>\n <Field label=\"Grupos de serviço\">\n <MultiSelect allLabel=\"Todos os grupos\" value={categories} onChange={setCategories}\n options={catalogs.categories.map((c) => ({ value: c.id, label: c.name }))} />\n </Field>\n <Field label=\"Profissionais\">\n <MultiSelect allLabel=\"Todos os profissionais\" value={professionals} onChange={setProfessionals}\n options={catalogs.professionals.map((p) => ({ value: p.id, label: p.name }))} />\n </Field>\n <Field label=\"Unidades\">\n <MultiSelect allLabel=\"Todas as unidades\" value={units} onChange={setUnits}\n options={catalogs.units.map((u) => ({ value: u.id, label: u.name }))} />\n </Field>\n </div>\n\n <Field label=\"Dias da semana\">\n <div className=\"flex flex-wrap gap-3 rounded-input border border-input bg-card px-3 py-2\">\n {WEEKDAYS.map((d) => (\n <label key={d.value} className=\"flex items-center gap-1.5 text-xs\">\n <Checkbox\n checked={weekdays.includes(d.value)}\n onChange={(on) => setWeekdays(on\n ? [...weekdays, d.value]\n : weekdays.filter((x) => x !== d.value))}\n />\n {d.label}\n </label>\n ))}\n </div>\n </Field>\n\n <Field label=\"Faixas de horário\">\n <div className=\"space-y-2 rounded-input border border-input bg-card px-3 py-2\">\n {ranges.length === 0 && (\n <p className=\"text-[10px] text-muted-foreground\">\n Sem faixa, a regra vale em qualquer horário.\n </p>\n )}\n {ranges.map((r, i) => (\n <div key={i} className=\"flex items-center gap-2\">\n <Input type=\"time\" value={r.from} className=\"h-8 w-32 text-xs\"\n onChange={(e) => setRanges(ranges.map((x, j) => j === i ? { ...x, from: e.target.value } : x))} />\n <span className=\"text-xs text-muted-foreground\">às</span>\n <Input type=\"time\" value={r.to} className=\"h-8 w-32 text-xs\"\n onChange={(e) => setRanges(ranges.map((x, j) => j === i ? { ...x, to: e.target.value } : x))} />\n <Button variant=\"bare\" size=\"bare\" type=\"button\" aria-label=\"Remover faixa\"\n onClick={() => setRanges(ranges.filter((_, j) => j !== i))}\n className=\"rounded-button p-1 text-destructive hover:bg-destructive/10\">\n <Trash2 className=\"h-3.5 w-3.5\" />\n </Button>\n </div>\n ))}\n <Button variant=\"outline\" size=\"sm\" onClick={() => setRanges([...ranges, { from: '', to: '' }])}>\n <Plus className=\"h-3 w-3\" /> Faixa\n </Button>\n <p className=\"text-[10px] text-muted-foreground\">\n Uma faixa que termina antes de começar atravessa a meia-noite — é assim\n que se escreve o adicional noturno.\n </p>\n </div>\n </Field>\n\n {/* Os que o motor ainda não honra. Ditos, não oferecidos: um\n controle que parece configurado e é ignorado custa um mês de\n comissão errada — e escondê-los faria quem vem do V1 achar\n que foram esquecidos. */}\n <div className=\"flex items-start gap-2 rounded-lg bg-muted/60 px-3 py-2\">\n <Info className=\"mt-0.5 h-3.5 w-3.5 shrink-0 text-muted-foreground\" />\n <p className=\"text-[10px] text-muted-foreground\">\n <strong>Ainda não disponíveis:</strong>{' '}\n {UNENFORCED_CRITERIA.map((c) => LABEL[c]).join(', ')}. Profissões e grupos de\n profissionais não têm cadastro nesta versão; a forma de pagamento só se\n conhece quando o pagamento acontece, depois de a comissão ser resolvida.\n </p>\n </div>\n </div>\n )}\n\n {error && <p className=\"text-xs text-destructive\">{error}</p>}\n </div>\n </ModalBody>\n\n <ModalFooter variant=\"bar\">\n <Button variant=\"outline\" size=\"sm\" onClick={onClose}>Cancelar</Button>\n <Button size=\"sm\" onClick={handleSave} disabled={saving || !name.trim()}>\n {saving ? 'Salvando…' : 'Salvar'}\n </Button>\n </ModalFooter>\n </ModalContent>\n </Modal>\n )\n}\n\nconst LABEL: Record<string, string> = {\n profession: 'Profissões',\n professional_group: 'Grupos de Profissionais',\n payment_method_type: 'Formas de Pagamento',\n}\n\nfunction Field({ label, children }: { label: string; children: React.ReactNode }) {\n return (\n <div>\n <label className=\"text-[10px] font-medium uppercase text-muted-foreground\">{label}</label>\n <div className=\"mt-0.5\">{children}</div>\n </div>\n )\n}\n","import React from 'react'\nimport { Plus, Trash2 } from 'lucide-react'\nimport {\n Modal, ModalContent, ModalHeader, ModalTitle, ModalDescription, ModalBody, ModalFooter,\n Button, Input, Checkbox, Select, SelectContent, SelectItem, SelectTrigger, SelectValue,\n} from '@fayz-ai/ui'\nimport type { FinancialDataProvider } from '@fayz-ai/financial/data/provider'\nimport type { CommissionRule, CommissionFunction, CommissionTier } from '@fayz-ai/financial/domain/commission'\n\n// ---------------------------------------------------------------------------\n// QUEM recebe e QUANTO.\n//\n// Uma regra paga N pessoas pelo mesmo atendimento — o executor, a assistente, o\n// fornecedor do produto —, cada uma com a sua conta, a sua base e a sua faixa.\n//\n// O DETALHE QUE SE PERDE AO PORTAR DE MEMÓRIA: o formulário MUDA DE FORMA com a\n// faixa de produção. Em `marginal` e `retroactive` o campo Valor SOME e no lugar\n// entra a tabela de faixas — porque aí o valor não é um número, é uma curva.\n// Manter os dois na tela deixaria dois valores concorrentes e nenhuma resposta\n// certa sobre qual vale.\n// ---------------------------------------------------------------------------\n\nconst ACCOUNT_TYPES = [\n { value: 'professional_executor', label: 'Profissional executor' },\n { value: 'professional', label: 'Profissional específico' },\n { value: 'supplier', label: 'Fornecedor' },\n { value: 'select_on_launch', label: 'Selecionar no lançamento' },\n] as const\n\nconst BASES = [\n { value: 'total', label: 'Total (bruto)' },\n { value: 'net', label: 'Líquido de descontos' },\n] as const\n\nconst TIER_MODES = [\n { value: 'none', label: 'Nenhuma (valor por atendimento)' },\n { value: 'marginal', label: 'Marginal (sobre o excedente de cada faixa)' },\n { value: 'retroactive', label: 'Retroativa (faixa atingida aplica sobre o total)' },\n { value: 'guaranteed_min', label: 'Mínimo garantido (cálculo normal com piso)' },\n] as const\n\nfunction blankFunction(order: number): CommissionFunction {\n return {\n functionName: 'Profissional',\n accountType: 'professional_executor',\n valueType: 'percentage',\n valueAmount: 0,\n calculationBase: 'net',\n tierMode: 'none',\n minGuaranteed: null,\n tiers: [],\n isVariable: false,\n displayOrder: order,\n isActive: true,\n }\n}\n\nexport interface CommissionFunctionsDialogProps {\n rule: CommissionRule\n provider: FinancialDataProvider\n onClose: () => void\n onSaved: () => void | Promise<void>\n}\n\nexport function CommissionFunctionsDialog({ rule, provider, onClose, onSaved }: CommissionFunctionsDialogProps) {\n const [functions, setFunctions] = React.useState<CommissionFunction[]>(\n rule.functions.length ? rule.functions : [blankFunction(0)],\n )\n const [saving, setSaving] = React.useState(false)\n const [error, setError] = React.useState<string | null>(null)\n\n function patch(i: number, changes: Partial<CommissionFunction>) {\n setFunctions((fs) => fs.map((f, j) => (j === i ? { ...f, ...changes } : f)))\n }\n\n async function handleSave() {\n setSaving(true)\n setError(null)\n try {\n await provider.saveCommissionFunctions?.(rule.id, functions)\n await onSaved()\n } catch (e: any) {\n setError(e?.message ?? String(e))\n } finally {\n setSaving(false)\n }\n }\n\n return (\n <Modal open onOpenChange={(o) => { if (!o) onClose() }}>\n <ModalContent size=\"2xl\" noPadding className=\"gap-0\">\n <ModalHeader className=\"border-b px-5 py-4\">\n <ModalTitle className=\"text-base\">Funções para comissão — {rule.name}</ModalTitle>\n <ModalDescription className=\"text-xs\">\n Quem recebe e quanto. Uma regra pode pagar mais de uma pessoa pelo mesmo atendimento.\n </ModalDescription>\n </ModalHeader>\n\n <ModalBody className=\"fz-container px-5 py-4\">\n <div className=\"space-y-3\">\n {functions.map((fn, i) => (\n <div key={i} className=\"rounded-card border bg-card p-3\">\n <div className=\"fz-fields fz-fields-3\">\n <Field label=\"Função\">\n <Input value={fn.functionName} placeholder=\"Ex.: Profissional\" className=\"h-9 text-xs\"\n onChange={(e) => patch(i, { functionName: e.target.value })} />\n </Field>\n\n <Field label=\"Conta padrão\">\n <ChoiceSelect value={fn.accountType}\n onChange={(v) => patch(i, { accountType: v as CommissionFunction['accountType'] })}\n options={ACCOUNT_TYPES} />\n </Field>\n\n <Field label=\"Sobre\">\n <ChoiceSelect value={fn.calculationBase}\n onChange={(v) => patch(i, { calculationBase: v as CommissionFunction['calculationBase'] })}\n options={BASES} />\n </Field>\n </div>\n\n <div className=\"fz-fields fz-fields-2 mt-3\">\n <Field label=\"Faixa de produção\">\n <ChoiceSelect value={fn.tierMode}\n onChange={(v) => patch(i, { tierMode: v as CommissionFunction['tierMode'] })}\n options={TIER_MODES} />\n </Field>\n\n {/* O valor único só existe onde ele É a resposta. */}\n {(fn.tierMode === 'none' || fn.tierMode === 'guaranteed_min') && (\n <Field label=\"Valor\">\n <div className=\"flex gap-2\">\n <Input type=\"number\" value={String(fn.valueAmount)} className=\"h-9 flex-1 text-xs\"\n onChange={(e) => patch(i, { valueAmount: Number(e.target.value) || 0 })} />\n <ChoiceSelect\n className=\"w-20\"\n value={fn.valueType}\n onChange={(v) => patch(i, { valueType: v as CommissionFunction['valueType'] })}\n options={[{ value: 'percentage', label: '%' }, { value: 'fixed', label: 'R$' }]} />\n </div>\n </Field>\n )}\n </div>\n\n {fn.tierMode === 'guaranteed_min' && (\n <div className=\"mt-3\">\n <Field label=\"Piso mensal garantido (R$)\">\n <Input type=\"number\" className=\"h-9 text-xs\"\n value={fn.minGuaranteed == null ? '' : String(fn.minGuaranteed)}\n onChange={(e) => patch(i, { minGuaranteed: e.target.value === '' ? null : Number(e.target.value) })} />\n <p className=\"mt-1 text-[10px] text-muted-foreground\">\n Recebe o maior entre o piso e a soma do cálculo normal no período.\n </p>\n </Field>\n </div>\n )}\n\n {(fn.tierMode === 'marginal' || fn.tierMode === 'retroactive') && (\n <TierTable\n tiers={fn.tiers}\n onChange={(tiers) => patch(i, { tiers })}\n />\n )}\n\n <div className=\"mt-3 flex items-center justify-between\">\n <label className=\"flex items-center gap-2 text-xs\">\n <Checkbox checked={fn.isVariable} onChange={(v) => patch(i, { isVariable: v })} />\n Valor variável\n </label>\n {/* Zerar as funções é uma decisão: sem nenhuma, a apuração\n paga o executor com o valor da própria regra (020). Por\n isso a última função também pode sair. */}\n <Button variant=\"bare\" size=\"bare\" type=\"button\" aria-label=\"Remover função\"\n onClick={() => setFunctions(functions.filter((_, j) => j !== i))}\n className=\"rounded-button p-1.5 text-destructive hover:bg-destructive/10\">\n <Trash2 className=\"h-3.5 w-3.5\" />\n </Button>\n </div>\n </div>\n ))}\n\n {functions.length === 0 && (\n <p className=\"rounded-lg bg-warning/5 px-3 py-2 text-xs text-foreground\">\n Sem nenhuma função, a apuração paga o executor usando o valor da própria regra.\n </p>\n )}\n\n <Button variant=\"outline\" size=\"sm\" onClick={() => setFunctions([...functions, blankFunction(functions.length)])}>\n <Plus className=\"h-3.5 w-3.5\" /> Adicionar função\n </Button>\n\n {error && <p className=\"text-xs text-destructive\">{error}</p>}\n </div>\n </ModalBody>\n\n <ModalFooter variant=\"bar\">\n <Button variant=\"outline\" size=\"sm\" onClick={onClose}>Fechar</Button>\n <Button size=\"sm\" onClick={handleSave} disabled={saving}>\n {saving ? 'Salvando…' : 'Salvar'}\n </Button>\n </ModalFooter>\n </ModalContent>\n </Modal>\n )\n}\n\nfunction TierTable({ tiers, onChange }: { tiers: CommissionTier[]; onChange: (t: CommissionTier[]) => void }) {\n function patch(i: number, changes: Partial<CommissionTier>) {\n onChange(tiers.map((t, j) => (j === i ? { ...t, ...changes } : t)))\n }\n return (\n <div className=\"mt-3 rounded-lg border px-3 py-2\">\n <div className=\"flex items-center justify-between\">\n <p className=\"text-xs font-medium\">Faixas sobre a produção do período</p>\n <Button variant=\"outline\" size=\"sm\"\n onClick={() => onChange([...tiers, { from: tiers.length ? 0 : 0, to: null, fixed: null, percent: null }])}>\n <Plus className=\"h-3 w-3\" /> Faixa\n </Button>\n </div>\n\n {tiers.length > 0 && (\n <div className=\"mt-2 space-y-1.5\">\n <div className=\"grid grid-cols-[1fr_1fr_1fr_1fr_auto] gap-2 text-[10px] uppercase text-muted-foreground\">\n <span>De (R$)</span><span>Até (vazio = sem limite)</span><span>Fixo (R$)</span><span>ou %</span><span />\n </div>\n {tiers.map((t, i) => (\n <div key={i} className=\"grid grid-cols-[1fr_1fr_1fr_1fr_auto] items-center gap-2\">\n <Input type=\"number\" className=\"h-8 text-xs\" value={String(t.from ?? 0)}\n onChange={(e) => patch(i, { from: Number(e.target.value) || 0 })} />\n <Input type=\"number\" className=\"h-8 text-xs\" value={t.to == null ? '' : String(t.to)}\n onChange={(e) => patch(i, { to: e.target.value === '' ? null : Number(e.target.value) })} />\n <Input type=\"number\" className=\"h-8 text-xs\" value={t.fixed == null ? '' : String(t.fixed)}\n onChange={(e) => patch(i, { fixed: e.target.value === '' ? null : Number(e.target.value) })} />\n <Input type=\"number\" className=\"h-8 text-xs\" value={t.percent == null ? '' : String(t.percent)}\n onChange={(e) => patch(i, { percent: e.target.value === '' ? null : Number(e.target.value) })} />\n <Button variant=\"bare\" size=\"bare\" type=\"button\" aria-label=\"Remover faixa\"\n onClick={() => onChange(tiers.filter((_, j) => j !== i))}\n className=\"rounded-button p-1 text-destructive hover:bg-destructive/10\">\n <Trash2 className=\"h-3.5 w-3.5\" />\n </Button>\n </div>\n ))}\n </div>\n )}\n\n <p className=\"mt-2 text-[10px] text-muted-foreground\">\n Ex.: 0–1.800 fixo R$ 180; acima de 1.800 → 20% só do que passar de 1.800.\n </p>\n </div>\n )\n}\n\nfunction Field({ label, children }: { label: string; children: React.ReactNode }) {\n return (\n <div>\n <label className=\"text-[10px] font-medium uppercase text-muted-foreground\">{label}</label>\n <div className=\"mt-0.5\">{children}</div>\n </div>\n )\n}\n\n/** Quatro opções fixas não pedem combobox com busca. */\nfunction ChoiceSelect({\n value, onChange, options, className,\n}: {\n value: string\n onChange: (v: string) => void\n options: readonly { value: string; label: string }[]\n className?: string\n}) {\n return (\n <Select value={value} onValueChange={onChange}>\n <SelectTrigger className={`bg-card px-2 text-xs shadow-[inset_0_1px_0_rgb(0_0_0_/0.06)] ${className ?? ''}`}><SelectValue /></SelectTrigger>\n <SelectContent>\n {options.map((o) => <SelectItem key={o.value} value={o.value}>{o.label}</SelectItem>)}\n </SelectContent>\n </Select>\n )\n}\n","import React from 'react'\nimport { Plus, Filter, Pencil, Copy, Trash2, DollarSign, TrendingUp, AlertTriangle } from 'lucide-react'\nimport {\n Button, Badge, Skeleton, MultiSelect, SubpageHeader, ConfirmDialog,\n Tooltip, TooltipTrigger, TooltipContent, TooltipProvider,\n} from '@fayz-ai/ui'\nimport { PageActions, type PageAction } from '@fayz-ai/admin'\nimport type { FinancialDataProvider } from '@fayz-ai/financial/data/provider'\nimport type { CommissionRule, CommissionCatalogs, CommissionCriteriaType, CommissionFunction } from '@fayz-ai/financial/domain/commission'\nimport { UNENFORCED_CRITERIA } from '@fayz-ai/financial/domain/commission'\nimport { CommissionRuleDialog } from '../components/CommissionRuleDialog'\nimport { CommissionFunctionsDialog } from '../components/CommissionFunctionsDialog'\n\n// ---------------------------------------------------------------------------\n// Regras de Comissão — a POLÍTICA da casa, em Configurações.\n//\n// Não fica no Financeiro de propósito, e é onde o V1 a põe: uma regra de\n// comissão é escrita uma vez por quem manda, e não é operação do dia. O\n// Financeiro mostra a APURAÇÃO (/financial/commissions), que é o resultado.\n//\n// O que existia antes disto era um CRUD genérico de seis campos em\n// /settings/financial → Propriedades. Ele deixa criar uma regra SEM critério\n// nenhum — e uma regra sem critério casa com tudo. Pior que não ter: parece\n// configurada.\n// ---------------------------------------------------------------------------\n\nconst CRITERIA_LABEL: Record<CommissionCriteriaType, string> = {\n service: 'Serviços',\n category: 'Grupos de Serviço',\n professional: 'Profissionais',\n professional_group: 'Grupos de Profissionais',\n profession: 'Profissões',\n unit: 'Unidades',\n payment_method_type: 'Formas de Pagamento',\n weekday: 'Dias da Semana',\n time_range: 'Faixas de Horário',\n}\n\n/** O que o funil simula. Só os critérios que o motor honra: simular com um\n * critério ignorado devolveria uma resposta que a apuração não repete. */\ninterface FunnelState {\n categoryId?: string\n serviceId?: string\n professionalId?: string\n unitId?: string\n}\n\n/**\n * A mesma conta que `plg_financial_commission_rule_for_item` faz no banco (021),\n * refeita aqui para responder ANTES de o mês fechar.\n *\n * Duas cópias da mesma regra é uma dívida real, e ela está anotada: o dia em que\n * a ordenação mudar no SQL, muda aqui. A alternativa era um round-trip por\n * combinação, e aí o funil deixaria de ser instantâneo — que é a única razão\n * pela qual ele é usado.\n */\nfunction ruleMatches(rule: CommissionRule, f: FunnelState, catalogs: CommissionCatalogs): boolean {\n for (const c of rule.criteria) {\n const ids = (c.criteriaValue?.ids as string[] | undefined) ?? []\n switch (c.criteriaType) {\n case 'service':\n if (!f.serviceId || !ids.includes(f.serviceId)) return false\n break\n case 'category': {\n // O serviço escolhido carrega a categoria dele: escolher \"Ultrassom\" no\n // funil tem de casar com a regra que restringe pela categoria dele, ou\n // o funil mente por um caminho que a apuração não tem.\n const viaService = f.serviceId\n ? catalogs.services.find((s) => s.id === f.serviceId)?.categoryId ?? undefined\n : undefined\n const cat = f.categoryId ?? viaService\n if (!cat || !ids.includes(cat)) return false\n break\n }\n case 'professional':\n if (!f.professionalId || !ids.includes(f.professionalId)) return false\n break\n case 'unit':\n if (!f.unitId || !ids.includes(f.unitId)) return false\n break\n // weekday e time_range restringem no banco, mas o funil não pergunta dia\n // nem hora — não restringem aqui, e a tela avisa.\n default:\n break\n }\n }\n return true\n}\n\n/** Especificidade primeiro, prioridade como desempate — a ordem da 021. */\nfunction rankRules(rules: CommissionRule[]): CommissionRule[] {\n return rules.slice().sort((a, b) => {\n if (a.criteria.length !== b.criteria.length) return b.criteria.length - a.criteria.length\n if (a.priority !== b.priority) return b.priority - a.priority\n return Number(a.isDefault) - Number(b.isDefault)\n })\n}\n\nfunction functionChip(fn: CommissionFunction): string {\n const who = fn.functionName || 'Função'\n if (fn.tierMode === 'guaranteed_min') return `${who}: mínimo garantido`\n if (fn.tierMode === 'marginal' || fn.tierMode === 'retroactive') return `${who}: por faixa`\n return fn.valueType === 'percentage'\n ? `${who}: ${fn.valueAmount}%`\n : `${who}: R$ ${fn.valueAmount.toFixed(2)}`\n}\n\nexport interface CommissionRulesViewProps {\n provider: FinancialDataProvider\n}\n\nexport function CommissionRulesView({ provider }: CommissionRulesViewProps) {\n const [rules, setRules] = React.useState<CommissionRule[] | null>(null)\n const [catalogs, setCatalogs] = React.useState<CommissionCatalogs>({\n services: [], categories: [], professionals: [], units: [],\n })\n const [error, setError] = React.useState<string | null>(null)\n const [funnel, setFunnel] = React.useState<FunnelState>({})\n const [editing, setEditing] = React.useState<CommissionRule | 'new' | null>(null)\n const [functionsFor, setFunctionsFor] = React.useState<CommissionRule | null>(null)\n const [deleting, setDeleting] = React.useState<CommissionRule | null>(null)\n\n const load = React.useCallback(async () => {\n try {\n setError(null)\n const [r, c] = await Promise.all([\n provider.getCommissionRules?.() ?? Promise.resolve([]),\n provider.getCommissionCatalogs?.() ?? Promise.resolve(catalogs),\n ])\n setRules(r)\n setCatalogs(c)\n } catch (e: any) {\n setError(e?.message ?? String(e))\n setRules([])\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [provider])\n\n React.useEffect(() => { void load() }, [load])\n\n const funnelActive = Object.values(funnel).some(Boolean)\n const visible = React.useMemo(() => {\n if (!rules) return []\n const ranked = rankRules(rules)\n if (!funnelActive) return ranked\n return ranked.filter((r) => r.isDefault || ruleMatches(r, funnel, catalogs))\n }, [rules, funnel, funnelActive, catalogs])\n\n // Quem VENCE nesta simulação: a primeira não-padrão que casa; senão a padrão.\n const winner = React.useMemo(() => {\n if (!funnelActive) return null\n return visible.find((r) => r.isActive && !r.isDefault) ?? visible.find((r) => r.isActive && r.isDefault) ?? null\n }, [visible, funnelActive])\n\n const hasDefault = (rules ?? []).some((r) => r.isDefault && r.isActive)\n\n async function handleDelete() {\n if (!deleting) return\n await provider.deleteCommissionRule?.(deleting.id)\n setDeleting(null)\n await load()\n }\n\n async function handleDuplicate(rule: CommissionRule) {\n await provider.duplicateCommissionRule?.(rule.id)\n await load()\n }\n\n const headerActions: PageAction[] = React.useMemo(() => [{\n id: 'new-rule',\n label: 'Adicionar regra',\n icon: Plus,\n intent: 'primary',\n creates: true,\n onSelect: () => setEditing('new'),\n }], [])\n\n return (\n <div className=\"space-y-4\">\n <SubpageHeader\n title=\"Regras de Comissão\"\n actions={<PageActions actions={headerActions} />}\n />\n\n {/* A regra de resolução mora na tela que a aplica, como no V1 faz no\n subtítulo. Sem ela a pergunta \"por que a minha regra não pegou?\" chega\n sempre — e chega depois de o dinheiro ter saído errado.\n\n Vai no CORPO e não em `subtitle` porque a barra da shell descarta o\n subtítulo de propósito (uma frase antes do conteúdo costuma repetir o\n que o conteúdo diz). Esta não repete: é o algoritmo. */}\n <p className=\"text-xs text-muted-foreground\">\n A regra <strong className=\"font-medium text-foreground\">mais específica</strong> (mais\n critérios casados) vence; a prioridade só desempata; a padrão apanha o resto.\n </p>\n\n {error && (\n <div className=\"rounded-card border border-destructive/30 bg-destructive/5 px-4 py-3 text-xs text-destructive\">\n Não foi possível carregar as regras: {error}\n </div>\n )}\n\n {/* Sem regra padrão, um serviço fora de todo critério não comissiona e\n ninguém descobre até o fim do mês. Dizer isso é mais barato que o mês. */}\n {rules && rules.length > 0 && !hasDefault && (\n <div className=\"flex items-start gap-2 rounded-card border border-warning/30 bg-warning/5 px-4 py-3\">\n <AlertTriangle className=\"mt-0.5 h-4 w-4 shrink-0 text-warning\" />\n <p className=\"text-xs text-foreground\">\n <strong>Nenhuma regra padrão ativa.</strong> O que não casar com nenhuma regra\n específica não vai comissionar — e isso só aparece no fechamento.\n </p>\n </div>\n )}\n\n {/* ── O funil ─────────────────────────────────────────────────────────\n Não é filtro de lista: é simulador. \"Neste atendimento, quem ganha?\" */}\n <div className=\"rounded-card border bg-card p-4 shadow-sm\">\n <div className=\"mb-3 flex items-center gap-2\">\n <Filter className=\"h-4 w-4 text-muted-foreground\" />\n <h3 className=\"text-sm font-semibold\">Simular um atendimento</h3>\n {funnelActive && (\n <Button variant=\"bare\" size=\"bare\"\n onClick={() => setFunnel({})}\n className=\"font-normal ml-auto text-xs text-muted-foreground underline-offset-2 hover:text-foreground hover:underline\"\n >\n Limpar\n </Button>\n )}\n </div>\n\n <div className=\"fz-container\">\n <div className=\"fz-fields fz-fields-4\">\n <FunnelField label=\"Grupo de Serviços\" options={catalogs.categories}\n value={funnel.categoryId} onChange={(v) => setFunnel((f) => ({ ...f, categoryId: v }))} />\n <FunnelField label=\"Serviço\" options={catalogs.services}\n value={funnel.serviceId} onChange={(v) => setFunnel((f) => ({ ...f, serviceId: v }))} />\n <FunnelField label=\"Profissional\" options={catalogs.professionals}\n value={funnel.professionalId} onChange={(v) => setFunnel((f) => ({ ...f, professionalId: v }))} />\n <FunnelField label=\"Unidade\" options={catalogs.units}\n value={funnel.unitId} onChange={(v) => setFunnel((f) => ({ ...f, unitId: v }))} />\n </div>\n </div>\n\n {funnelActive && (\n <p className=\"mt-3 rounded-lg bg-muted/60 px-3 py-2 text-xs\">\n {winner ? (\n <>Venceria: <strong className=\"text-foreground\">{winner.name}</strong>\n {winner.isDefault && <span className=\"text-muted-foreground\"> (a padrão)</span>}\n {winner.functions.length > 0 && (\n <span className=\"text-muted-foreground\"> · {winner.functions.map(functionChip).join(' · ')}</span>\n )}\n </>\n ) : (\n <span className=\"text-destructive\">Nenhuma regra casa — este atendimento não comissionaria.</span>\n )}\n </p>\n )}\n </div>\n\n {/* ── As regras ───────────────────────────────────────────────────────── */}\n {rules === null ? (\n <div className=\"space-y-3\">\n {[0, 1].map((i) => (\n <div key={i} className=\"rounded-card border bg-card p-4 shadow-sm\">\n <div className=\"flex items-center gap-2\">\n <Skeleton className=\"h-5 w-20 rounded-full\" />\n <Skeleton className=\"h-5 w-40\" />\n </div>\n <Skeleton className=\"mt-2 h-3 w-72\" />\n <Skeleton className=\"mt-3 h-5 w-32 rounded-full\" />\n </div>\n ))}\n </div>\n ) : visible.length === 0 ? (\n <div className=\"rounded-card border bg-card px-4 py-10 text-center\">\n <TrendingUp className=\"mx-auto h-8 w-8 text-muted-foreground/40\" />\n <p className=\"mt-2 text-sm font-medium\">\n {funnelActive ? 'Nenhuma regra casa com esta combinação' : 'Nenhuma regra de comissão'}\n </p>\n <p className=\"mt-1 text-xs text-muted-foreground\">\n {funnelActive\n ? 'Este atendimento não comissionaria. Crie uma regra padrão para que nada fique de fora.'\n : 'Comece pela regra padrão — ela é o que vale quando nenhuma outra casa.'}\n </p>\n {!funnelActive && (\n <Button size=\"sm\" className=\"mt-4\" onClick={() => setEditing('new')}>\n <Plus className=\"h-3.5 w-3.5\" /> Criar regra\n </Button>\n )}\n </div>\n ) : (\n <div className=\"space-y-3\">\n {visible.map((rule) => (\n <div\n key={rule.id}\n className={`rounded-card border bg-card p-4 shadow-sm ${\n winner?.id === rule.id ? 'border-primary/50 ring-1 ring-primary/20' : ''\n } ${!rule.isActive ? 'opacity-60' : ''}`}\n >\n <div className=\"flex items-start justify-between gap-3\">\n <div className=\"min-w-0\">\n <div className=\"flex flex-wrap items-center gap-2\">\n {rule.isDefault ? (\n <Badge variant=\"default\" className=\"text-[10px]\">PADRÃO</Badge>\n ) : (\n <Badge variant=\"outline\" className=\"text-[10px]\">REGRA #{rule.priority}</Badge>\n )}\n <span className=\"text-sm font-semibold text-foreground\">{rule.name}</span>\n {!rule.isActive && <Badge variant=\"secondary\" className=\"text-[10px]\">Inativa</Badge>}\n </div>\n\n {rule.description && (\n <p className=\"mt-1 text-xs italic text-muted-foreground\">{rule.description}</p>\n )}\n\n <div className=\"mt-2 flex flex-wrap gap-1.5\">\n {rule.criteria.length === 0 ? (\n // \"Sem critério\" parece esquecido; \"vale para todos\" é o\n // que a regra realmente faz.\n <span className=\"text-[10px] text-muted-foreground\">\n {rule.isDefault ? 'Aplicada quando nenhuma outra casa.' : 'Sem critérios — vale para todos os atendimentos.'}\n </span>\n ) : (\n rule.criteria.map((c) => (\n <Badge key={c.criteriaType} variant=\"outline\" className=\"text-[10px]\">\n {CRITERIA_LABEL[c.criteriaType]} ({countCriteria(c.criteriaValue)})\n {UNENFORCED_CRITERIA.includes(c.criteriaType) && ' ⚠'}\n </Badge>\n ))\n )}\n </div>\n\n <div className=\"mt-3\">\n <p className=\"text-[10px] font-medium uppercase text-muted-foreground\">Funções para comissão</p>\n <div className=\"mt-1 flex flex-wrap gap-1.5\">\n {rule.functions.length === 0 ? (\n <span className=\"text-[10px] text-warning\">\n Nenhuma função — a apuração vai pagar o executor com o valor da regra.\n </span>\n ) : (\n rule.functions.map((fn, i) => (\n <Badge key={fn.id ?? i} variant=\"secondary\" className=\"text-[10px]\">\n {functionChip(fn)}\n </Badge>\n ))\n )}\n </div>\n </div>\n </div>\n\n {/* A padrão não duplica e não exclui: ela é estrutural. Um estado\n que impede não oferece a ação. */}\n <TooltipProvider delayDuration={200}>\n <div className=\"flex shrink-0 items-center gap-1\">\n {!rule.isDefault && (\n <IconButton label=\"Duplicar regra\" onClick={() => void handleDuplicate(rule)}>\n <Copy className=\"h-3.5 w-3.5\" />\n </IconButton>\n )}\n <IconButton label=\"Editar regra\" onClick={() => setEditing(rule)}>\n <Pencil className=\"h-3.5 w-3.5\" />\n </IconButton>\n <IconButton label=\"Funções (quem recebe e quanto)\" onClick={() => setFunctionsFor(rule)}>\n <DollarSign className=\"h-3.5 w-3.5\" />\n </IconButton>\n {!rule.isDefault && (\n <IconButton label=\"Excluir regra\" destructive onClick={() => setDeleting(rule)}>\n <Trash2 className=\"h-3.5 w-3.5\" />\n </IconButton>\n )}\n </div>\n </TooltipProvider>\n </div>\n </div>\n ))}\n </div>\n )}\n\n {editing && (\n <CommissionRuleDialog\n // `key` por alvo: o diálogo lê a regra nos inicializadores de estado,\n // que só rodam no primeiro render da INSTÂNCIA. Sem chave, React\n // reaproveita a mesma instância entre \"nova\" e \"editar\" (mesmo tipo,\n // mesma posição) e a nova regra abre com os campos da anterior.\n key={editing === 'new' ? 'new' : editing.id}\n rule={editing === 'new' ? null : editing}\n catalogs={catalogs}\n hasDefault={hasDefault}\n provider={provider}\n onClose={() => setEditing(null)}\n onSaved={async () => { setEditing(null); await load() }}\n />\n )}\n\n {functionsFor && (\n <CommissionFunctionsDialog\n key={functionsFor.id}\n rule={functionsFor}\n provider={provider}\n onClose={() => setFunctionsFor(null)}\n onSaved={async () => { setFunctionsFor(null); await load() }}\n />\n )}\n\n <ConfirmDialog\n open={!!deleting}\n onCancel={() => setDeleting(null)}\n title=\"Excluir regra de comissão\"\n description={\n `\"${deleting?.name ?? ''}\" e os seus critérios e funções serão removidos. ` +\n 'Comissões já apuradas não mudam.'\n }\n confirmLabel=\"Excluir\"\n variant=\"destructive\"\n onConfirm={() => { void handleDelete() }}\n />\n </div>\n )\n}\n\nfunction countCriteria(v: Record<string, unknown>): number {\n for (const key of ['ids', 'days', 'ranges']) {\n const arr = v?.[key]\n if (Array.isArray(arr)) return arr.length\n }\n return 0\n}\n\n/**\n * Um botão de ícone diz o que faz — pelo TOOLTIP do design system, não pelo\n * `title` do navegador.\n *\n * O `title` nativo demora ~1s, desenha uma caixinha do sistema operacional que\n * ignora o tema, e some ao menor movimento do mouse. Numa fileira de quatro\n * ícones sem rótulo, ele é a diferença entre \"editar\" e \"excluir\" — e essa\n * diferença não pode depender de um controle que não é nosso.\n *\n * `aria-label` FICA: o tooltip é dica visual, não nome acessível. Um leitor de\n * tela não lê tooltip.\n */\nfunction IconButton({\n label, onClick, destructive, children,\n}: { label: string; onClick: () => void; destructive?: boolean; children: React.ReactNode }) {\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n <Button variant=\"bare\" size=\"bare\"\n type=\"button\"\n aria-label={label}\n onClick={onClick}\n className={`font-normal whitespace-normal fz-tap inline-flex h-7 w-7 items-center justify-center rounded-button border bg-card transition-colors ${\n destructive ? 'text-destructive hover:bg-destructive/10' : 'text-muted-foreground hover:bg-muted hover:text-foreground'\n }`}\n >\n {children}\n </Button>\n </TooltipTrigger>\n <TooltipContent className=\"text-xs\">{label}</TooltipContent>\n </Tooltip>\n )\n}\n\n/** Um select de um só, com busca — o funil escolhe uma combinação, não listas. */\nfunction FunnelField({\n label, options, value, onChange,\n}: {\n label: string\n options: { id: string; name: string }[]\n value?: string\n onChange: (v: string | undefined) => void\n}) {\n return (\n <div>\n <label className=\"text-[10px] font-medium uppercase text-muted-foreground\">{label}</label>\n <div className=\"mt-0.5\">\n <MultiSelect\n allLabel={`Qualquer ${label.toLowerCase()}`}\n options={options.map((o) => ({ value: o.id, label: o.name }))}\n value={value ? [value] : []}\n // Um só: marcar outro troca, em vez de somar — o funil pergunta por UM\n // atendimento, e dois serviços ao mesmo tempo não é um atendimento.\n onChange={(v: string[]) => onChange(v.length ? v[v.length - 1] : undefined)}\n />\n </div>\n </div>\n )\n}\n"]}
@@ -0,0 +1,3 @@
1
+ export { FINANCIAL_MODULE_DEFAULTS, FinancialGeneralSettings } from './chunk-POYZFEAN.js';
2
+ //# sourceMappingURL=FinancialGeneralSettings-WXJOCJPZ.js.map
3
+ //# sourceMappingURL=FinancialGeneralSettings-WXJOCJPZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"FinancialGeneralSettings-WXJOCJPZ.js"}