@fayz-ai/plugin-fiscal-br 0.8.0 → 0.8.2

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.
@@ -279,4 +279,6 @@ export interface SyncNewNotesResult {
279
279
  * path as «Puxar por chave», so nothing here bypasses its permissions.
280
280
  */
281
281
  export declare function syncNewNotes(max?: number): Promise<SyncNewNotesResult>;
282
+ /** Each product's stock unit (inventory details), for prefilling the note's lines. */
283
+ export declare function listProductStockUnits(productIds: string[]): Promise<Map<string, string>>;
282
284
  //# sourceMappingURL=inbox.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../../src/data/inbox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../../src/data/inbox.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -11,7 +11,7 @@ export { InvoiceNotesButton } from './views/InvoiceNotesButton';
11
11
  export { InboundNotesPage } from './views/InboundNotesPage';
12
12
  export { InboundNotesView } from './views/InboundNotesView';
13
13
  export { NoteReconcileView } from './views/NoteReconcileView';
14
- export { ComingSoon, EmBreve } from './views/ComingSoon';
14
+ export { ComingSoon, EmBreve } from '@fayz-ai/ui';
15
15
  export { IssuedNotesView, ReturnedNotesView, TaxGroupsView } from './views/GapScreens';
16
16
  /**
17
17
  * O grupo «Notas Fiscais» como o V1 o desenha: cinco telas sob uma aba. Duas
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,eAAe,CAAA;AACjE,OAAO,EAA4B,KAAK,+BAA+B,EAAE,MAAM,wBAAwB,CAAA;AAUvG,cAAc,wBAAwB,CAAA;AACtC,cAAc,0BAA0B,CAAA;AACxC,cAAc,SAAS,CAAA;AACvB,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACtF;;;;GAIG;AACH,OAAO,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAErH,MAAM,WAAW,4BAA6B,SAAQ,+BAA+B;IACnF,sGAAsG;IACtG,UAAU,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,UAAU,CAAA;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;OAIG;IACH,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAA;CAC7C;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,4BAAiC,GAAG,cAAc,CA+HhG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,eAAe,CAAA;AACjE,OAAO,EAA4B,KAAK,+BAA+B,EAAE,MAAM,wBAAwB,CAAA;AAUvG,cAAc,wBAAwB,CAAA;AACtC,cAAc,0BAA0B,CAAA;AACxC,cAAc,SAAS,CAAA;AACvB,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACtF;;;;GAIG;AACH,OAAO,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAErH,MAAM,WAAW,4BAA6B,SAAQ,+BAA+B;IACnF,sGAAsG;IACtG,UAAU,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,UAAU,CAAA;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;OAIG;IACH,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAA;CAC7C;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,4BAAiC,GAAG,cAAc,CA+HhG"}
package/dist/index.js CHANGED
@@ -1,11 +1,11 @@
1
- import { recordRailFields, RECORD_GROUP, activeFacet, describeError, getSupabaseClientOptional, connectionSettings, connectionStatus, definePlugin, createConnectionStore, settingsStatus, maskCpfCnpj, getActiveTenantId as getActiveTenantId$1 } from '@fayz-ai/core';
1
+ import { recordRailFields, RECORD_GROUP, activeFacet, describeError, getSupabaseClientOptional, formatCurrency, connectionSettings, connectionStatus, definePlugin, createConnectionStore, settingsStatus, maskCpfCnpj, getActiveTenantId as getActiveTenantId$1 } from '@fayz-ai/core';
2
2
  import React6, { useState, useCallback, useEffect, useMemo, useRef } from 'react';
3
3
  import { ModalHeader, ModalTitle, ModalBody, Skeleton, AiActionButton, Dropdown, DropdownTrigger, Button, DropdownContent, DropdownItem, Hint, Card, InlineLink, SearchSelect, Input, EmBreve, DatePicker, ModalFooter, SubpageHeader, Modal, ModalContent, ModalDescription, Select, SelectTrigger, SelectValue, SelectContent, SelectItem, useFilterDraft, RowActions, PageHeaderActions, FilterPanel, FilterPanelField, SearchField, TooltipProvider, DataTable, ChevronPager, Tooltip, TooltipTrigger, TooltipContent, Badge, SegmentedControl, ComingSoon, toast, CardHeader, CardTitle, CardContent, CardDescription, Switch } from '@fayz-ai/ui';
4
4
  export { ComingSoon, EmBreve } from '@fayz-ai/ui';
5
5
  import { registerDocumentOpener, PersonLink, getActiveTenantId, useUnitFilter, PageActions, adminNavigateTo, usePermissionOptional, UNIT_DETAIL_ZONES } from '@fayz-ai/admin';
6
6
  import { Loader2, Download, ChevronDown, FileCode2, FileText, RefreshCw, UserPlus, Gift, AlertTriangle, ChevronRight, Check, Trash2, Plus, KeyRound, Image, UploadCloud, Paperclip, ScanLine, Eye, ListChecks, FileDown, CheckCircle2, FileCheck2, XCircle, Inbox, X, Info, ShieldCheck } from 'lucide-react';
7
7
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
8
- import { FINANCIAL_INVOICE_ZONES } from '@fayz-ai/plugin-financial';
8
+ import { FINANCIAL_INVOICE_ZONES } from '@fayz-ai/financial/views/zones';
9
9
 
10
10
  // src/index.ts
11
11
  var PLUGNOTAS_CONNECTOR_ID = "plugnotas";
@@ -4308,6 +4308,108 @@ COMMENT ON COLUMN public.plg_fiscalbr_emitter_settings.dfe_last_error_at IS
4308
4308
 
4309
4309
  GRANT SELECT (dfe_last_error, dfe_last_error_at) ON public.plg_fiscalbr_emitter_settings TO authenticated;
4310
4310
  `;
4311
+ var MIGRATION_027_A_NOTA_COM_CONTA_E_SEM_ESTOQUE_TERMINA_NO_V2 = `-- ---------------------------------------------------------------------------
4312
+ -- A note that has its payable but never reached stock can be finished in V2.
4313
+ -- ---------------------------------------------------------------------------
4314
+ -- In the V1, saving the payment plan of a DANFE import opened the payable
4315
+ -- before anyone reconciled the lines; many imports stopped there. Copied over,
4316
+ -- those notes carry invoice_id and no stock, and both RPCs read invoice_id as
4317
+ -- "accepted": nothing could be reconciled and the goods never entered stock
4318
+ -- (Artorius 18, Espa\xE7o Facial 72, Pertinho 17 on 14/10/2026).
4319
+ --
4320
+ -- "Settled" is now: stocked, or a payable with no stock line left to receive.
4321
+ -- Saving decisions is allowed until then, and accepting a note that already has
4322
+ -- its payable receives the stock against it instead of opening a second one.
4323
+ -- ---------------------------------------------------------------------------
4324
+
4325
+ DO $m$
4326
+ DECLARE
4327
+ v_def text;
4328
+ v_old text;
4329
+ v_new text;
4330
+ v_start integer;
4331
+ v_end integer;
4332
+ v_pending constant text := $q$NOT EXISTS (SELECT 1 FROM public.plg_fiscalbr_inbox_items x
4333
+ WHERE x.tenant_id = v_tenant AND x.inbox_document_id = v_doc.id
4334
+ AND x.stock_movement_id IS NULL
4335
+ AND (x.entry_type IS NULL OR x.entry_type = '' OR x.entry_type IN ('insumo','revenda','patrimonio','uso_consumo')))$q$;
4336
+ BEGIN
4337
+ -- 1. Saving decisions.
4338
+ SELECT pg_get_functiondef(p.oid) INTO v_def FROM pg_proc p JOIN pg_namespace n ON n.oid = p.pronamespace
4339
+ WHERE n.nspname = 'public' AND p.proname = 'fiscalbr_save_inbox_decision';
4340
+ v_old := 'IF v_doc.stocked_at IS NOT NULL OR v_doc.invoice_id IS NOT NULL THEN';
4341
+ IF v_def IS NULL THEN RAISE EXCEPTION 'fiscalbr/027: fiscalbr_save_inbox_decision does not exist'; END IF;
4342
+ IF position(v_old in v_def) > 0 THEN
4343
+ v_def := replace(v_def, v_old, 'IF v_doc.stocked_at IS NOT NULL OR (v_doc.invoice_id IS NOT NULL AND ' || v_pending || ') THEN');
4344
+ -- v_tenant is that function's own variable name too.
4345
+ EXECUTE v_def;
4346
+ ELSIF position('x.stock_movement_id IS NULL' in v_def) = 0 THEN
4347
+ RAISE EXCEPTION 'fiscalbr/027: unexpected body of fiscalbr_save_inbox_decision \u2014 check by hand';
4348
+ END IF;
4349
+
4350
+ -- 2. Accepting.
4351
+ SELECT pg_get_functiondef(p.oid) INTO v_def FROM pg_proc p JOIN pg_namespace n ON n.oid = p.pronamespace
4352
+ WHERE n.nspname = 'public' AND p.proname = 'fiscalbr_accept_inbox_document';
4353
+ IF v_def IS NULL THEN RAISE EXCEPTION 'fiscalbr/027: fiscalbr_accept_inbox_document does not exist'; END IF;
4354
+ IF position('Half-done in the V1' in v_def) > 0 THEN RETURN; END IF;
4355
+
4356
+ IF position(v_old in v_def) = 0 THEN
4357
+ RAISE EXCEPTION 'fiscalbr/027: unexpected guard in fiscalbr_accept_inbox_document \u2014 check by hand';
4358
+ END IF;
4359
+ v_def := replace(v_def, v_old, 'IF v_doc.stocked_at IS NOT NULL OR (v_doc.invoice_id IS NOT NULL AND ' || v_pending || ') THEN');
4360
+
4361
+ v_start := position(' SELECT coalesce(sum(value), 0),' in v_def);
4362
+ v_new := 'PERFORM public.plg_fiscalbr_note_charge_lines(v_tenant, v_doc.id, v_invoice, v_total);';
4363
+ v_end := position(v_new in v_def);
4364
+ IF v_start = 0 OR v_end = 0 OR v_end < v_start THEN
4365
+ RAISE EXCEPTION 'fiscalbr/027: unexpected payable block in fiscalbr_accept_inbox_document \u2014 check by hand';
4366
+ END IF;
4367
+ v_end := v_end + length(v_new);
4368
+ v_def := substr(v_def, 1, v_start - 1)
4369
+ || $q$ IF v_doc.invoice_id IS NOT NULL THEN
4370
+ -- Half-done in the V1: the payable exists; only the stock is missing.
4371
+ v_invoice := v_doc.invoice_id;
4372
+ SELECT total INTO v_total FROM public.plg_financial_invoices WHERE id = v_invoice;
4373
+ v_insts := '[]'::jsonb;
4374
+ ELSE
4375
+ $q$ || substr(v_def, v_start, v_end - v_start) || $q$
4376
+ END IF;$q$
4377
+ || substr(v_def, v_end);
4378
+ EXECUTE v_def;
4379
+ END
4380
+ $m$;
4381
+ `;
4382
+ var MIGRATION_028_A_LINHA_DE_ESTOQUE_TEM_UNIDADE = `-- ---------------------------------------------------------------------------
4383
+ -- A stock line enters with its unit.
4384
+ -- ---------------------------------------------------------------------------
4385
+ -- Accepting let a stock line through with no stock unit; the movement then
4386
+ -- carried a bare quantity that every screen reads as "unidade" (Artorius, NF-e
4387
+ -- 222879: 20 kg of copa lombo entered as 20 units). The screen now suggests the
4388
+ -- unit and refuses without one; this is the same rule where it cannot be
4389
+ -- skipped.
4390
+ -- ---------------------------------------------------------------------------
4391
+
4392
+ DO $m$
4393
+ DECLARE
4394
+ v_def text;
4395
+ v_old constant text := $q$ IF v_it.product_id IS NULL THEN$q$;
4396
+ v_new constant text := $q$ IF v_it.stock_unit_id IS NULL THEN
4397
+ RAISE EXCEPTION 'fiscalbr: item % entra no estoque sem unidade \u2014 escolha a unidade de estoque', v_it.item_number
4398
+ USING ERRCODE = '23514';
4399
+ END IF;
4400
+ IF v_it.product_id IS NULL THEN$q$;
4401
+ BEGIN
4402
+ SELECT pg_get_functiondef(p.oid) INTO v_def FROM pg_proc p JOIN pg_namespace n ON n.oid = p.pronamespace
4403
+ WHERE n.nspname = 'public' AND p.proname = 'fiscalbr_accept_inbox_document';
4404
+ IF v_def IS NULL THEN RAISE EXCEPTION 'fiscalbr/028: fiscalbr_accept_inbox_document does not exist'; END IF;
4405
+ IF position('entra no estoque sem unidade' in v_def) > 0 THEN RETURN; END IF;
4406
+ IF position(v_old in v_def) = 0 THEN
4407
+ RAISE EXCEPTION 'fiscalbr/028: unexpected body of fiscalbr_accept_inbox_document \u2014 check by hand';
4408
+ END IF;
4409
+ EXECUTE replace(v_def, v_old, v_new);
4410
+ END
4411
+ $m$;
4412
+ `;
4311
4413
  var MIGRATIONS = [
4312
4414
  { id: "000_baseline", sql: MIGRATION_000_BASELINE },
4313
4415
  { id: "001_preserve_terminal_results_and_recover_leases", sql: MIGRATION_001_PRESERVE_TERMINAL_RESULTS_AND_RECOVER_LEASES },
@@ -4335,7 +4437,9 @@ var MIGRATIONS = [
4335
4437
  { id: "023_a_nota_aceita_sem_linhas_recebe_as_linhas", sql: MIGRATION_023_A_NOTA_ACEITA_SEM_LINHAS_RECEBE_AS_LINHAS },
4336
4438
  { id: "024_a_nota_nao_aponta_para_conta_que_sumiu", sql: MIGRATION_024_A_NOTA_NAO_APONTA_PARA_CONTA_QUE_SUMIU },
4337
4439
  { id: "025_a_conta_da_nota_fecha_com_o_total", sql: MIGRATION_025_A_CONTA_DA_NOTA_FECHA_COM_O_TOTAL },
4338
- { id: "026_o_recebimento_parado_diz_por_que", sql: MIGRATION_026_O_RECEBIMENTO_PARADO_DIZ_POR_QUE }
4440
+ { id: "026_o_recebimento_parado_diz_por_que", sql: MIGRATION_026_O_RECEBIMENTO_PARADO_DIZ_POR_QUE },
4441
+ { id: "027_a_nota_com_conta_e_sem_estoque_termina_no_v2", sql: MIGRATION_027_A_NOTA_COM_CONTA_E_SEM_ESTOQUE_TERMINA_NO_V2 },
4442
+ { id: "028_a_linha_de_estoque_tem_unidade", sql: MIGRATION_028_A_LINHA_DE_ESTOQUE_TEM_UNIDADE }
4339
4443
  ];
4340
4444
  var taxGroupEntity = {
4341
4445
  name: "Grupo fiscal",
@@ -5310,6 +5414,12 @@ async function syncNewNotes(max = 25) {
5310
5414
  }
5311
5415
  return result;
5312
5416
  }
5417
+ async function listProductStockUnits(productIds) {
5418
+ if (productIds.length === 0) return /* @__PURE__ */ new Map();
5419
+ const { data, error } = await sb().from("plg_inventory_product_details").select("product_id, measurement_unit_id").in("product_id", productIds).not("measurement_unit_id", "is", null);
5420
+ if (error) throw error;
5421
+ return new Map((data ?? []).map((r) => [String(r.product_id), String(r.measurement_unit_id)]));
5422
+ }
5313
5423
  var formatCnpj = (d) => `${d.slice(0, 2)}.${d.slice(2, 5)}.${d.slice(5, 8)}/${d.slice(8, 12)}-${d.slice(12)}`;
5314
5424
  var groupKey = (digits2) => digits2.replace(/(\d{4})(?=\d)/g, "$1 ");
5315
5425
  function PullByKeyDialog({ open, onOpenChange, unitId, initialKey, onPulled }) {
@@ -5417,7 +5527,7 @@ function PullByKeyDialog({ open, onOpenChange, unitId, initialKey, onPulled }) {
5417
5527
  ] })
5418
5528
  ] }) });
5419
5529
  }
5420
- var money = (value) => new Intl.NumberFormat("pt-BR", { style: "currency", currency: "BRL" }).format(value || 0);
5530
+ var money = (value) => formatCurrency(value || 0, "BRL");
5421
5531
  var day = (iso) => iso ? iso.slice(0, 10).split("-").reverse().join("/") : "\u2014";
5422
5532
  var cnpj = (digits2) => {
5423
5533
  const d = (digits2 ?? "").replace(/\D/g, "");
@@ -5919,7 +6029,7 @@ function StockBadge({ stockedAt, status }) {
5919
6029
  ] }) : /* @__PURE__ */ jsx("span", { className: "inline-flex items-center rounded-full bg-warning-soft px-2 py-0.5 text-[11px] font-medium text-warning-soft-foreground", children: "Pendente" });
5920
6030
  }
5921
6031
  var MAX_BYTES = 15 * 1024 * 1024;
5922
- var money2 = (v) => new Intl.NumberFormat("pt-BR", { style: "currency", currency: "BRL" }).format(v || 0);
6032
+ var money2 = (v) => formatCurrency(v || 0);
5923
6033
  var day2 = (iso) => iso ? iso.slice(0, 10).split("-").reverse().join("/") : "\u2014";
5924
6034
  var size = (b) => !b ? "" : b < 1024 * 1024 ? `${Math.max(1, Math.round(b / 1024))} KB` : `${(b / 1024 / 1024).toFixed(1)} MB`;
5925
6035
  function applyPaymentCode(list, code) {
@@ -6116,7 +6226,7 @@ var norm = (u) => (u ?? "").trim().toUpperCase().replace(/\.$/, "");
6116
6226
  function packagingCount(commercialUnit) {
6117
6227
  return PACKAGING_COUNT[norm(commercialUnit)] ?? null;
6118
6228
  }
6119
- var money3 = (v) => new Intl.NumberFormat("pt-BR", { style: "currency", currency: "BRL" }).format(v || 0);
6229
+ var money3 = (v) => formatCurrency(v || 0, "BRL");
6120
6230
  var qty = (v) => new Intl.NumberFormat("pt-BR", { maximumFractionDigits: 4 }).format(v || 0);
6121
6231
  var day3 = (iso) => iso ? iso.slice(0, 10).split("-").reverse().join("/") : "\u2014";
6122
6232
  var ENTRY_TYPES = [
@@ -6132,6 +6242,32 @@ var localSearch = (options) => (query) => {
6132
6242
  return (q ? options.filter((o) => o.label.toLowerCase().includes(q)) : options).slice(0, 40);
6133
6243
  };
6134
6244
  var labelOf = (options, id) => options.find((o) => o.id === id)?.label;
6245
+ var NOTE_UNIT_CODES = {
6246
+ KG: "kg",
6247
+ KGS: "kg",
6248
+ KILO: "kg",
6249
+ QUILO: "kg",
6250
+ G: "g",
6251
+ GR: "g",
6252
+ GRS: "g",
6253
+ L: "l",
6254
+ LT: "l",
6255
+ LTS: "l",
6256
+ LITRO: "l",
6257
+ ML: "ml",
6258
+ UN: "un",
6259
+ UND: "un",
6260
+ UNID: "un",
6261
+ UNI: "un",
6262
+ UNIDADE: "un"
6263
+ };
6264
+ function suggestedStockUnit(item, units, productUnits, productId) {
6265
+ const fromProduct = productId ? productUnits.get(productId) : void 0;
6266
+ if (fromProduct && units.some((u) => u.id === fromProduct)) return fromProduct;
6267
+ if (packagingCount(item.unit) !== null) return null;
6268
+ const code = NOTE_UNIT_CODES[String(item.unit ?? "").trim().toUpperCase().replace(/\d+$/, "")];
6269
+ return code ? units.find((u) => u.abbreviation.toLowerCase() === code)?.id ?? null : null;
6270
+ }
6135
6271
  var draftOf = (item) => ({
6136
6272
  productId: item.productId,
6137
6273
  productLabel: "",
@@ -6156,6 +6292,7 @@ function NoteReconcileView({ noteId, onBack, onOpenInvoice, chrome = "page" }) {
6156
6292
  const [defaultAccount, setDefaultAccount] = useState(null);
6157
6293
  const [location, setLocation] = useState(null);
6158
6294
  const [units, setUnits] = useState([]);
6295
+ const [productUnits, setProductUnits] = useState(() => /* @__PURE__ */ new Map());
6159
6296
  const [accounts, setAccounts] = useState([]);
6160
6297
  const [locations, setLocations] = useState([]);
6161
6298
  const [saving, setSaving] = useState(false);
@@ -6216,9 +6353,16 @@ function NoteReconcileView({ noteId, onBack, onOpenInvoice, chrome = "page" }) {
6216
6353
  if (detail) {
6217
6354
  const vinculados = [...new Set(detail.items.map((i) => i.productId).filter((id) => !!id))];
6218
6355
  const nomes = vinculados.length ? new Map((await listProductsByIds(vinculados).catch(() => [])).map((p) => [p.id, p.name])) : /* @__PURE__ */ new Map();
6356
+ const unidadesDoProduto = await listProductStockUnits(vinculados).catch(() => /* @__PURE__ */ new Map());
6357
+ setProductUnits(unidadesDoProduto);
6219
6358
  setDrafts(Object.fromEntries(detail.items.map((i) => [
6220
6359
  i.id,
6221
- { ...draftOf(i), productLabel: i.productId && nomes.get(i.productId) || "" }
6360
+ {
6361
+ ...draftOf(i),
6362
+ productLabel: i.productId && nomes.get(i.productId) || "",
6363
+ // Stocked lines keep what was recorded; open ones get a unit instead of a blank.
6364
+ stockUnitId: i.stockUnitId ?? (i.stockMovementId ? null : suggestedStockUnit(i, u, unidadesDoProduto, i.productId))
6365
+ }
6222
6366
  ])));
6223
6367
  setChecked(Object.fromEntries(detail.items.filter((i) => i.reconciled).map((i) => [i.id, true])));
6224
6368
  const pending = detail.items.find((i) => !i.reconciled);
@@ -6286,11 +6430,18 @@ function NoteReconcileView({ noteId, onBack, onOpenInvoice, chrome = "page" }) {
6286
6430
  const decisions = useMemo(() => buildDecisions(drafts), [buildDecisions, drafts]);
6287
6431
  const stockLines = decisions.filter((d) => isStockBearing(d.entryType));
6288
6432
  const missingProduct = stockLines.filter((d) => !d.productId).length;
6433
+ const missingUnit = stockLines.filter((d) => {
6434
+ const item = note?.items.find((i) => i.id === d.id);
6435
+ return !d.stockUnitId && !item?.stockMovementId;
6436
+ }).length;
6289
6437
  const missingType = decisions.filter((d) => !d.entryType).length;
6290
6438
  const suspectFactor = (item, d) => packagingCount(item.unit) !== null && isStockBearing(d.entryType) && ((Number(d.conversionFactor.replace(",", ".")) || 1) === 1 || !d.stockUnitId);
6291
6439
  const unverifiedFactor = note ? note.items.filter((i) => suspectFactor(i, drafts[i.id] ?? draftOf(i))).length : 0;
6292
6440
  const instalmentSum = instalments.reduce((acc, d) => acc + (Number(d.amount) || 0), 0);
6293
- const readOnly = Boolean(note?.stockedAt || note?.invoiceId);
6441
+ const hasPayable = Boolean(note?.invoiceId);
6442
+ const pendingStock = (note?.items ?? []).some((i) => !i.stockMovementId && (!i.entryType || isStockBearing(i.entryType)));
6443
+ const readOnly = Boolean(note?.stockedAt || hasPayable && !pendingStock);
6444
+ const paymentLocked = readOnly || hasPayable;
6294
6445
  const isReady = (item, d) => Boolean(d.entryType) && (!isStockBearing(d.entryType) || Boolean(d.productId)) && !suspectFactor(item, d);
6295
6446
  const doneCount = note ? note.items.filter((i) => checked[i.id]).length : 0;
6296
6447
  const toggleItem = (id) => setOpenIds((prev) => prev.includes(id) ? prev.filter((x) => x !== id) : [...prev, id]);
@@ -6545,11 +6696,12 @@ function NoteReconcileView({ noteId, onBack, onOpenInvoice, chrome = "page" }) {
6545
6696
  const pendencias = [
6546
6697
  unverifiedFactor > 0 && `${unverifiedFactor} com fator por conferir`,
6547
6698
  missingType > 0 && `${missingType} sem tipo`,
6548
- missingProduct > 0 && `${missingProduct} sem produto`
6699
+ missingProduct > 0 && `${missingProduct} sem produto`,
6700
+ missingUnit > 0 && `${missingUnit} sem unidade de estoque`
6549
6701
  ].filter(Boolean).join(" \xB7 ");
6550
6702
  const rodape = readOnly ? null : {
6551
6703
  start: /* @__PURE__ */ jsxs(Fragment, { children: [
6552
- /* @__PURE__ */ jsxs(
6704
+ !hasPayable && /* @__PURE__ */ jsxs(
6553
6705
  Button,
6554
6706
  {
6555
6707
  variant: "ghost",
@@ -6582,10 +6734,10 @@ function NoteReconcileView({ noteId, onBack, onOpenInvoice, chrome = "page" }) {
6582
6734
  onClick: () => {
6583
6735
  void accept();
6584
6736
  },
6585
- disabled: accepting || saving || missingType > 0 || missingProduct > 0 || unverifiedFactor > 0,
6737
+ disabled: accepting || saving || missingType > 0 || missingProduct > 0 || missingUnit > 0 || unverifiedFactor > 0,
6586
6738
  children: [
6587
6739
  accepting ? /* @__PURE__ */ jsx(Loader2, { className: "mr-1.5 h-3.5 w-3.5 animate-spin" }) : /* @__PURE__ */ jsx(Check, { className: "mr-1.5 h-3.5 w-3.5" }),
6588
- "Aceitar"
6740
+ hasPayable ? "Dar entrada no estoque" : "Aceitar"
6589
6741
  ]
6590
6742
  }
6591
6743
  )
@@ -6594,7 +6746,7 @@ function NoteReconcileView({ noteId, onBack, onOpenInvoice, chrome = "page" }) {
6594
6746
  return moldura(/* @__PURE__ */ jsxs("div", { className: `space-y-4 ${emModal ? "" : "pb-24"}`, children: [
6595
6747
  cabecalho(`Concilia\xE7\xE3o \xB7 NF-e ${note.number}`),
6596
6748
  accepted && /* @__PURE__ */ jsxs(Card, { className: "border-success bg-success-soft p-4", children: [
6597
- /* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-success-soft-foreground", children: accepted.alreadyAccepted ? "Esta nota j\xE1 havia sido aceita \u2014 nada foi lan\xE7ado de novo." : `Aceita: ${accepted.stockLines} ${accepted.stockLines === 1 ? "linha" : "linhas"} de estoque e um t\xEDtulo de ${money3(accepted.invoiceTotal)} em ${accepted.instalments} ${accepted.instalments === 1 ? "parcela" : "parcelas"}.` }),
6749
+ /* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-success-soft-foreground", children: accepted.alreadyAccepted ? "Esta nota j\xE1 havia sido aceita \u2014 nada foi lan\xE7ado de novo." : accepted.instalments === 0 ? `Entrada no estoque: ${accepted.stockLines} ${accepted.stockLines === 1 ? "linha" : "linhas"}, ligadas \xE0 conta a pagar que a nota j\xE1 tinha (${money3(accepted.invoiceTotal)}).` : `Aceita: ${accepted.stockLines} ${accepted.stockLines === 1 ? "linha" : "linhas"} de estoque e um t\xEDtulo de ${money3(accepted.invoiceTotal)} em ${accepted.instalments} ${accepted.instalments === 1 ? "parcela" : "parcelas"}.` }),
6598
6750
  accepted.invoiceId && onOpenInvoice && /* @__PURE__ */ jsx(Button, { variant: "outline", size: "sm", className: "mt-2", onClick: () => onOpenInvoice(accepted.invoiceId), children: "Abrir a conta a pagar" })
6599
6751
  ] }),
6600
6752
  payableLost && !readOnly && /* @__PURE__ */ jsxs(Card, { className: "border-warning bg-warning-soft p-4", "data-testid": "note-payable-lost", children: [
@@ -6619,7 +6771,7 @@ function NoteReconcileView({ noteId, onBack, onOpenInvoice, chrome = "page" }) {
6619
6771
  ] }),
6620
6772
  /* @__PURE__ */ jsxs("div", { children: [
6621
6773
  /* @__PURE__ */ jsx("dt", { className: "text-xs text-muted-foreground", children: "Estoque" }),
6622
- /* @__PURE__ */ jsx("dd", { className: "mt-0.5", children: note.stockedAt ? `Entrada em ${day3(note.stockedAt)}` : /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: readOnly ? "Sem entrada no estoque" : "Ainda sem entrada \u2014 entra quando a nota for aceita" }) })
6774
+ /* @__PURE__ */ jsx("dd", { className: "mt-0.5", children: note.stockedAt ? `Entrada em ${day3(note.stockedAt)}` : /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: readOnly ? "Sem entrada no estoque" : hasPayable ? "Ainda sem entrada \u2014 conclua a concilia\xE7\xE3o e d\xEA entrada" : "Ainda sem entrada \u2014 entra quando a nota for aceita" }) })
6623
6775
  ] })
6624
6776
  ] })
6625
6777
  ] }),
@@ -6752,10 +6904,12 @@ function NoteReconcileView({ noteId, onBack, onOpenInvoice, chrome = "page" }) {
6752
6904
  suggestionNote && /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-2 rounded-md border border-magic/30 bg-magic-soft px-3 py-2", children: [
6753
6905
  /* @__PURE__ */ jsx("p", { className: "flex-1 text-xs text-magic-soft-foreground", children: suggestionNote }),
6754
6906
  /* @__PURE__ */ jsx(
6755
- "button",
6907
+ Button,
6756
6908
  {
6909
+ variant: "bare",
6910
+ size: "bare",
6757
6911
  type: "button",
6758
- className: "shrink-0 text-xs text-magic-soft-foreground/70 hover:underline",
6912
+ className: "shrink-0 text-xs text-magic-soft-foreground/70 hover:underline font-normal",
6759
6913
  onClick: () => setSuggestionNote(null),
6760
6914
  children: "Fechar"
6761
6915
  }
@@ -6794,12 +6948,14 @@ function NoteReconcileView({ noteId, onBack, onOpenInvoice, chrome = "page" }) {
6794
6948
  const typeLabel = ENTRY_TYPES.find((t) => t.value === d.entryType)?.label;
6795
6949
  return /* @__PURE__ */ jsxs(Card, { className: "overflow-hidden", children: [
6796
6950
  /* @__PURE__ */ jsxs(
6797
- "button",
6951
+ Button,
6798
6952
  {
6953
+ variant: "bare",
6954
+ size: "bare",
6799
6955
  type: "button",
6800
6956
  onClick: () => toggleItem(item.id),
6801
6957
  "aria-expanded": open,
6802
- className: "flex w-full items-center gap-3 px-4 py-3 text-left transition-colors hover:bg-muted/30",
6958
+ className: "flex w-full items-center justify-start gap-3 rounded-none px-4 py-3 text-left font-normal transition-colors hover:bg-muted/30",
6803
6959
  children: [
6804
6960
  /* @__PURE__ */ jsx(
6805
6961
  ChevronRight,
@@ -6850,12 +7006,14 @@ function NoteReconcileView({ noteId, onBack, onOpenInvoice, chrome = "page" }) {
6850
7006
  /* @__PURE__ */ jsxs("label", { className: "block", children: [
6851
7007
  /* @__PURE__ */ jsx("span", { className: "text-xs font-medium text-muted-foreground", children: "Tipo do registro" }),
6852
7008
  /* @__PURE__ */ jsx("div", { className: "mt-1 flex flex-wrap gap-1", children: ENTRY_TYPES.map((t) => /* @__PURE__ */ jsxs(
6853
- "button",
7009
+ Button,
6854
7010
  {
7011
+ variant: "bare",
7012
+ size: "bare",
6855
7013
  type: "button",
6856
7014
  disabled: readOnly,
6857
7015
  onClick: () => patch(item.id, { entryType: t.value }),
6858
- className: `rounded-full border px-2.5 py-1 text-[11px] transition-colors disabled:opacity-60 ${d.entryType === t.value ? "border-primary bg-primary text-primary-foreground" : "border-input hover:bg-muted"}`,
7016
+ className: `gap-0 font-normal rounded-full border px-2.5 py-1 text-[11px] transition-colors disabled:opacity-60 ${d.entryType === t.value ? "border-primary bg-primary text-primary-foreground" : "border-input hover:bg-muted"}`,
6859
7017
  children: [
6860
7018
  t.label,
6861
7019
  t.hint && /* @__PURE__ */ jsxs("span", { className: "ml-1 opacity-70", children: [
@@ -6875,7 +7033,17 @@ function NoteReconcileView({ noteId, onBack, onOpenInvoice, chrome = "page" }) {
6875
7033
  {
6876
7034
  value: d.productId ?? void 0,
6877
7035
  displayValue: d.productLabel || void 0,
6878
- onChange: (id, option) => patch(item.id, { productId: id || null, productLabel: option?.label ?? "" }),
7036
+ onChange: (id, option) => {
7037
+ patch(item.id, { productId: id || null, productLabel: option?.label ?? "" });
7038
+ if (id && !d.stockUnitId) {
7039
+ void listProductStockUnits([id]).then((m) => {
7040
+ setProductUnits((prev) => new Map([...prev, ...m]));
7041
+ const unit = suggestedStockUnit(item, units, m, id);
7042
+ if (unit) patch(item.id, { stockUnitId: unit });
7043
+ }).catch(() => {
7044
+ });
7045
+ }
7046
+ },
6879
7047
  onSearch: async (term) => {
6880
7048
  const found = await searchProducts(term || item.description.slice(0, 24));
6881
7049
  return found.map((prod) => ({
@@ -6916,7 +7084,7 @@ function NoteReconcileView({ noteId, onBack, onOpenInvoice, chrome = "page" }) {
6916
7084
  displayValue: labelOf(unitOptions, d.stockUnitId),
6917
7085
  onChange: (id) => patch(item.id, { stockUnitId: id || null }),
6918
7086
  minChars: 0,
6919
- placeholder: "Unidade",
7087
+ placeholder: "Escolha a unidade",
6920
7088
  noResultsLabel: "Nenhuma unidade",
6921
7089
  searchingLabel: "Buscando\u2026",
6922
7090
  clearLabel: "Limpar",
@@ -6979,12 +7147,14 @@ function NoteReconcileView({ noteId, onBack, onOpenInvoice, chrome = "page" }) {
6979
7147
  /* @__PURE__ */ jsxs("label", { className: "block", children: [
6980
7148
  /* @__PURE__ */ jsx("span", { className: "text-xs font-medium text-muted-foreground", children: "Modo de custo" }),
6981
7149
  /* @__PURE__ */ jsx("div", { className: "mt-1 flex gap-1", children: ["novo", "media"].map((mode) => /* @__PURE__ */ jsx(
6982
- "button",
7150
+ Button,
6983
7151
  {
7152
+ variant: "bare",
7153
+ size: "bare",
6984
7154
  type: "button",
6985
7155
  disabled: readOnly,
6986
7156
  onClick: () => patch(item.id, { costMode: mode }),
6987
- className: `flex-1 rounded-md border px-2 py-1 text-[11px] disabled:opacity-60 ${d.costMode === mode ? "border-primary bg-primary/10" : "border-input hover:bg-muted"}`,
7157
+ className: `font-normal flex-1 rounded-md border px-2 py-1 text-[11px] disabled:opacity-60 ${d.costMode === mode ? "border-primary bg-primary/10" : "border-input hover:bg-muted"}`,
6988
7158
  children: mode === "novo" ? "Novo" : "M\xE9dia"
6989
7159
  },
6990
7160
  mode
@@ -7068,7 +7238,7 @@ function NoteReconcileView({ noteId, onBack, onOpenInvoice, chrome = "page" }) {
7068
7238
  /* @__PURE__ */ jsx("span", { className: "pb-2 text-xs tabular-nums text-muted-foreground", children: inst.index }),
7069
7239
  /* @__PURE__ */ jsxs("label", { className: "block", children: [
7070
7240
  /* @__PURE__ */ jsx("span", { className: "text-[11px] text-muted-foreground", children: "Vencimento" }),
7071
- readOnly ? /* @__PURE__ */ jsx("p", { className: "py-2 text-sm tabular-nums", children: day3(inst.dueDate) }) : /* @__PURE__ */ jsx(
7241
+ paymentLocked ? /* @__PURE__ */ jsx("p", { className: "py-2 text-sm tabular-nums", children: day3(inst.dueDate) }) : /* @__PURE__ */ jsx(
7072
7242
  DatePicker,
7073
7243
  {
7074
7244
  value: inst.dueDate ?? "",
@@ -7083,7 +7253,7 @@ function NoteReconcileView({ noteId, onBack, onOpenInvoice, chrome = "page" }) {
7083
7253
  {
7084
7254
  value: String(inst.amount),
7085
7255
  inputMode: "decimal",
7086
- disabled: readOnly,
7256
+ disabled: paymentLocked,
7087
7257
  onChange: (e) => setInstalments((prev) => prev.map((p, j) => j === i ? { ...p, amount: Number(e.target.value.replace(",", ".")) || 0 } : p))
7088
7258
  }
7089
7259
  )
@@ -7094,12 +7264,12 @@ function NoteReconcileView({ noteId, onBack, onOpenInvoice, chrome = "page" }) {
7094
7264
  Input,
7095
7265
  {
7096
7266
  value: inst.barcode ?? inst.pixKey ?? "",
7097
- disabled: readOnly,
7267
+ disabled: paymentLocked,
7098
7268
  onChange: (e) => setInstalments((prev) => prev.map((p, j) => j === i ? { ...p, barcode: e.target.value } : p))
7099
7269
  }
7100
7270
  )
7101
7271
  ] }),
7102
- !readOnly && /* @__PURE__ */ jsx(
7272
+ !paymentLocked && /* @__PURE__ */ jsx(
7103
7273
  Button,
7104
7274
  {
7105
7275
  variant: "ghost",
@@ -7110,7 +7280,7 @@ function NoteReconcileView({ noteId, onBack, onOpenInvoice, chrome = "page" }) {
7110
7280
  }
7111
7281
  )
7112
7282
  ] }, i)) }),
7113
- !readOnly && /* @__PURE__ */ jsxs(
7283
+ !paymentLocked && /* @__PURE__ */ jsxs(
7114
7284
  Button,
7115
7285
  {
7116
7286
  variant: "outline",
@@ -7924,7 +8094,7 @@ var dayOrDateTime = (v) => {
7924
8094
  const d = new Date(v);
7925
8095
  return d.getHours() === 0 && d.getMinutes() === 0 && d.getSeconds() === 0 ? d.toLocaleDateString("pt-BR") : dateTime(v);
7926
8096
  };
7927
- var money4 = (v) => v == null ? "\u2014" : v.toLocaleString("pt-BR", { style: "currency", currency: "BRL" });
8097
+ var money4 = (v) => v == null ? "\u2014" : formatCurrency(v);
7928
8098
  function buttonHint(s) {
7929
8099
  const parts = [s.hasValid ? "Notas fiscais desta conta \u2014 h\xE1 uma nota v\xE1lida" : "Notas fiscais desta conta"];
7930
8100
  if (s.withoutEffect > 0) parts.push(`${s.withoutEffect} cancelada(s), rejeitada(s) ou com erro`);
@@ -8011,10 +8181,12 @@ function NoteRow({ note, canCancel, onChanged }) {
8011
8181
  };
8012
8182
  return /* @__PURE__ */ jsxs("div", { className: `rounded-lg border ${dimmed ? "bg-muted/30" : ""}`, children: [
8013
8183
  /* @__PURE__ */ jsxs(
8014
- "button",
8184
+ Button,
8015
8185
  {
8186
+ variant: "bare",
8187
+ size: "bare",
8016
8188
  type: "button",
8017
- className: "flex w-full items-center gap-2 p-3 text-left",
8189
+ className: "font-normal whitespace-normal justify-start flex w-full items-center gap-2 p-3 text-left",
8018
8190
  onClick: () => setExpanded((v) => !v),
8019
8191
  "aria-expanded": expanded,
8020
8192
  children: [
@@ -8572,6 +8744,6 @@ function createPlugNotasPlugin(options = {}) {
8572
8744
  });
8573
8745
  }
8574
8746
 
8575
- export { EVENT_LABEL, InboundNoteDocumentModal, InboundNotesPage, InboundNotesView, InvoiceNotesButton, IssuedNotesView, MODEL_LABEL, NfeParseError, NoteReconcileView, PLUGNOTAS_CONNECTOR_ID, PLUGNOTAS_FIELDS, PLUGNOTAS_SETTINGS, PullByKeyError, ReturnedNotesView, STATUS_META, STOCK_BEARING_ENTRY_TYPES, TaxGroupsView, acceptNote, addNoteAttachment, cancelNote, createPlugNotasConnector, createPlugNotasFinancialProvider, createPlugNotasPlugin, eventStatusLabel, explainRejection, extractPaymentCode, fetchNotePdf, fillInboxLines, findInboxNoteByNumber, findInboxNoteByOperation, getInboxIntakeHealth, getInboxNote, getInboxNotePdf, getInboxNoteXml, getNotePayable, healInboxNote, inboundNoteDocumentModal, inboundNotesInventoryView, isStockBearing, isValidCnpj, isWithoutEffect, linkInboxSupplier, listChartAccounts, listInboxNotes, listInvoiceNotes, listMeasurementUnits, listNoteAttachments, listNoteEvents, listProductsByIds, listStockLocations, listSupplierMap, markPlugNotasEmitterReady, moveNoteAttachmentsToInvoice, notesButtonState, onlyDigits, parseBoleto, parseNfeXml, paymentLabel, paymentTypeFromCode, pullNoteByKey, recipientLabel, refreshNote, rejectNote, removeNoteAttachment, saveNoteDecision, searchProducts, stageNoteFromXml, statusLabel, suggestNoteItems, summarizeNotes, syncNewNotes, toStagePayload };
8747
+ export { EVENT_LABEL, InboundNoteDocumentModal, InboundNotesPage, InboundNotesView, InvoiceNotesButton, IssuedNotesView, MODEL_LABEL, NfeParseError, NoteReconcileView, PLUGNOTAS_CONNECTOR_ID, PLUGNOTAS_FIELDS, PLUGNOTAS_SETTINGS, PullByKeyError, ReturnedNotesView, STATUS_META, STOCK_BEARING_ENTRY_TYPES, TaxGroupsView, acceptNote, addNoteAttachment, cancelNote, createPlugNotasConnector, createPlugNotasFinancialProvider, createPlugNotasPlugin, eventStatusLabel, explainRejection, extractPaymentCode, fetchNotePdf, fillInboxLines, findInboxNoteByNumber, findInboxNoteByOperation, getInboxIntakeHealth, getInboxNote, getInboxNotePdf, getInboxNoteXml, getNotePayable, healInboxNote, inboundNoteDocumentModal, inboundNotesInventoryView, isStockBearing, isValidCnpj, isWithoutEffect, linkInboxSupplier, listChartAccounts, listInboxNotes, listInvoiceNotes, listMeasurementUnits, listNoteAttachments, listNoteEvents, listProductStockUnits, listProductsByIds, listStockLocations, listSupplierMap, markPlugNotasEmitterReady, moveNoteAttachmentsToInvoice, notesButtonState, onlyDigits, parseBoleto, parseNfeXml, paymentLabel, paymentTypeFromCode, pullNoteByKey, recipientLabel, refreshNote, rejectNote, removeNoteAttachment, saveNoteDecision, searchProducts, stageNoteFromXml, statusLabel, suggestNoteItems, summarizeNotes, syncNewNotes, toStagePayload };
8576
8748
  //# sourceMappingURL=index.js.map
8577
8749
  //# sourceMappingURL=index.js.map