@sinete/nfe 0.4.0 → 0.6.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.
@@ -12,7 +12,7 @@
12
12
  * enviar; se o envio ficar sem resposta (timeout, conexão caída), nunca gere outro `cNF` nem outro `dhEmi` para o mesmo
13
13
  * número. Consulte a chave (`resolverEnvioSemResposta`) e, se ela não constar, reenvie exatamente os mesmos bytes.
14
14
  */
15
- import type { Ambiente, Assinador, Logger, Relogio, ResultadoSefaz, Uf } from '@sinete/core';
15
+ import type { Ambiente, Assinador, Logger, Recusado, Relogio, ResultadoSefaz, Uf } from '@sinete/core';
16
16
  import type { TRetConsCad_infCons_infCad } from '@sinete/schemas/nfe/consulta-cadastro/PL_010d';
17
17
  import type { resEvento, resNFe } from '@sinete/schemas/nfe/dist-dfe/PL_NFeDistDFe_104';
18
18
  import type { EndpointResolvido, NfeServico, Transporte } from '@sinete/transport';
@@ -62,6 +62,16 @@ export interface ClienteNfeOpcoes {
62
62
  readonly endpointNfce?: (servico: NfeServico, uf: Uf) => EndpointResolvido;
63
63
  /** Gerador de `idLote` (até 15 dígitos); padrão: os milissegundos do relógio. */
64
64
  readonly idLote?: () => string;
65
+ /**
66
+ * O titular emite NF-e sem inscrição estadual, como contribuinte exclusivo do IBS/CBS (NT 2026.007 v1.10). A
67
+ * autorização dessa NF-e é só na SVRS (RV C17-11, rejeição 166), e os eventos de autoria do emitente dela também
68
+ * (RV 1P10-40, rejeição 188), menos na série 890 a 919. Com a NF-e assinada na mão (`autorizar`, `consultar` e
69
+ * `consultarRecibo` com ela) o cliente vê a falta de `emit/IE` sozinho; esta opção é para o que parte só da chave:
70
+ * cancelamento, carta de correção, consulta e recibo sem a nota (o recibo sem a nota vai à SVRS no modelo 55). A série 890 a
71
+ * 919 é exceção só dos eventos. Não vale para a NFC-e, que não admite emitente sem
72
+ * IE (RV C17-42, rejeição 156).
73
+ */
74
+ readonly contribuinteExclusivoIbsCbs?: boolean;
65
75
  }
66
76
  /** Opções de toda chamada que vai à rede. */
67
77
  export interface EnvioOpcoes {
@@ -147,7 +157,22 @@ export interface Inutilizacao {
147
157
  readonly retInutNFe: string;
148
158
  readonly procInutNFe: string;
149
159
  }
150
- export type ResultadoInutilizacao = ResultadoSefaz<Inutilizacao, never>;
160
+ /**
161
+ * Protocolo da inutilização que já valia para a mesma faixa, trazido pelo 563 (MOC 7.0 Visão Geral, tabela 5-12,
162
+ * regra I07). Não existe consulta de inutilização na NF-e 4.00: depois de um pedido sem resposta, reenviar a mesma
163
+ * faixa e ler este campo é o único caminho para guardar o `nProt` que valeu. O `procInutNFe` não se monta com ele,
164
+ * porque a resposta 563 não é a homologação.
165
+ */
166
+ export interface InutilizacaoAnterior {
167
+ readonly nProt: string;
168
+ /** `retInutNFe` do 563 como veio na resposta. */
169
+ readonly retInutNFe: string;
170
+ }
171
+ /** Recusa da inutilização; no 563 com protocolo, `anterior` traz o protocolo da faixa já inutilizada. */
172
+ export interface RecusadoInutilizacao extends Recusado {
173
+ readonly anterior?: InutilizacaoAnterior;
174
+ }
175
+ export type ResultadoInutilizacao = Exclude<ResultadoSefaz<Inutilizacao, never>, Recusado> | RecusadoInutilizacao;
151
176
  export interface Cadastro {
152
177
  readonly UF: string;
153
178
  readonly dhCons: string;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/services/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/services/client.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import type { Recusado, StatusSefaz } from '@sinete/core';
6
6
  /** Classes de `cStat` que a tabela descreve. */
7
- export type CStatClasse = 'autorizada' | 'denegada' | 'cancelada' | 'loteRecebido' | 'loteProcessado' | 'loteEmProcessamento' | 'loteNaoLocalizado' | 'servicoEmOperacao' | 'inutilizacaoHomologada' | 'eventoRegistrado' | 'loteEventoProcessado' | 'cadastroEncontrado' | 'distribuicaoNenhumDocumento' | 'distribuicaoDocumentos' | 'duplicidade' | 'duplicidadeChaveDiferente' | 'naoConsta' | 'outraNfeNoNumero' | 'consumoIndevido';
7
+ export type CStatClasse = 'autorizada' | 'denegada' | 'cancelada' | 'loteRecebido' | 'loteProcessado' | 'loteEmProcessamento' | 'loteNaoLocalizado' | 'servicoEmOperacao' | 'inutilizacaoHomologada' | 'inutilizacaoJaHomologada' | 'eventoRegistrado' | 'loteEventoProcessado' | 'cadastroEncontrado' | 'distribuicaoNenhumDocumento' | 'distribuicaoDocumentos' | 'duplicidade' | 'duplicidadeChaveDiferente' | 'naoConsta' | 'outraNfeNoNumero' | 'consumoIndevido';
8
8
  /** O `cStat` pertence à classe da tabela. */
9
9
  export declare function cstatEm(cStat: string, classe: CStatClasse): boolean;
10
10
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"outcome.d.ts","sourceRoot":"","sources":["../../src/services/outcome.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAgB,QAAQ,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAKxE,gDAAgD;AAChD,MAAM,MAAM,WAAW,GACnB,YAAY,GACZ,UAAU,GACV,WAAW,GACX,cAAc,GACd,gBAAgB,GAChB,qBAAqB,GACrB,mBAAmB,GACnB,mBAAmB,GACnB,wBAAwB,GACxB,kBAAkB,GAClB,sBAAsB,GACtB,oBAAoB,GACpB,6BAA6B,GAC7B,wBAAwB,GACxB,aAAa,GACb,2BAA2B,GAC3B,WAAW,GACX,kBAAkB,GAClB,iBAAiB,CAAC;AAKtB,6CAA6C;AAC7C,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAEnE;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,QAAQ,CAKvD"}
1
+ {"version":3,"file":"outcome.d.ts","sourceRoot":"","sources":["../../src/services/outcome.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAgB,QAAQ,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAKxE,gDAAgD;AAChD,MAAM,MAAM,WAAW,GACnB,YAAY,GACZ,UAAU,GACV,WAAW,GACX,cAAc,GACd,gBAAgB,GAChB,qBAAqB,GACrB,mBAAmB,GACnB,mBAAmB,GACnB,wBAAwB,GACxB,0BAA0B,GAC1B,kBAAkB,GAClB,sBAAsB,GACtB,oBAAoB,GACpB,6BAA6B,GAC7B,wBAAwB,GACxB,aAAa,GACb,2BAA2B,GAC3B,WAAW,GACX,kBAAkB,GAClB,iBAAiB,CAAC;AAKtB,6CAA6C;AAC7C,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAEnE;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,QAAQ,CAKvD"}
@@ -1,3 +1,3 @@
1
1
  /** Versão de `@sinete/nfe`, para o padrão de `verProc`/`verAplic` (`formatarVerProc` do @sinete/core). */
2
- export declare const VERSAO_PACOTE = "0.4.0";
2
+ export declare const VERSAO_PACOTE = "0.6.0";
3
3
  //# sourceMappingURL=versao-gerada.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sinete/nfe",
3
- "version": "0.4.0",
3
+ "version": "0.6.0",
4
4
  "description": "NF-e modelo 55: modelo de entrada tipado, montagem com totais em decimal exato, validação antes de assinar, autorização, consultas, eventos, inutilização, contingência SVC e Distribuição DF-e",
5
5
  "keywords": [
6
6
  "nfe",
@@ -45,15 +45,15 @@
45
45
  },
46
46
  "dependencies": {
47
47
  "@sinete/core": "^0.3.0",
48
- "@sinete/ibs-cbs": "^0.2.1",
48
+ "@sinete/ibs-cbs": "^0.2.2",
49
49
  "@sinete/ibs-cbs-dados": ">=2026.9.3",
50
- "@sinete/rejeicoes": "^0.3.0",
51
- "@sinete/schemas": "^0.2.1",
52
- "@sinete/transport": "^0.2.1",
53
- "@sinete/validators": "^0.2.1"
50
+ "@sinete/rejeicoes": "^0.4.1",
51
+ "@sinete/schemas": "^0.3.0",
52
+ "@sinete/transport": "^0.3.0",
53
+ "@sinete/validators": "^0.3.0"
54
54
  },
55
55
  "devDependencies": {
56
- "@sinete/sefaz-sim": "^0.2.1"
56
+ "@sinete/sefaz-sim": "^0.4.0"
57
57
  },
58
58
  "publishConfig": {
59
59
  "access": "public"
@@ -69,7 +69,7 @@ import {
69
69
  urlsNfce,
70
70
  } from './nfce.ts';
71
71
  import { camposForaDoPl, escolherPl } from './pl.ts';
72
- import { cstComIsento, vencimentos } from './rejeicoes.ts';
72
+ import { cfopDeDevolucao, cstComIsento, cstComNaoContribuinte, exclusivoIbsCbs, vencimentos } from './rejeicoes.ts';
73
73
  import { conferirTextosDaEntrada, textoXmlValido } from './textos.ts';
74
74
  import { buildIcmsUfDest, buildIi, buildIpi, buildIssqn, buildPisCofins, buildPisCofinsSt } from './tributos.ts';
75
75
  import type { Familia } from './values.ts';
@@ -149,8 +149,9 @@ export interface NfeMontada {
149
149
  readonly tpEmis: string;
150
150
  readonly dhEmi: string;
151
151
  /**
152
- * Só NFC-e: o `infNFeSupl` a acrescentar (`comQrCode`, `assinarNfe`). Na versão 3 em contingência off-line, falta a
153
- * assinatura dos parâmetros, que só o certificado faz (`assinaturaQrCode`).
152
+ * NFC-e e NF-e com DANFE Simplificado Tipo 2 (tpImp 6, NT 2026.002): o `infNFeSupl` a acrescentar (`comQrCode`,
153
+ * `assinarNfe`). Na versão 3 em contingência off-line, falta a assinatura dos parâmetros, que só o certificado faz
154
+ * (`assinaturaQrCode`).
154
155
  */
155
156
  readonly nfce?: NfceSupl;
156
157
  /** Pacote de liberação usado (escolhido pela vigência). */
@@ -399,7 +400,7 @@ interface ItemMontado {
399
400
  readonly issqnOpcionais: Record<string, Decimal>;
400
401
  }
401
402
 
402
- function montarItem(ctx: Ctx, item: Item, n: number, normal: boolean): ItemMontado {
403
+ function montarItem(ctx: Ctx, item: Item, n: number, normal: boolean, semIe: boolean): ItemMontado {
403
404
  const path = `itens[${n}]`;
404
405
  const p = item.produto;
405
406
  const pp = `${path}.produto`;
@@ -518,7 +519,9 @@ function montarItem(ctx: Ctx, item: Item, n: number, normal: boolean): ItemMonta
518
519
  const r = buildIcms(ctx, imp.icms, { vOp, vIPI: v.vIPI }, `${ip}.icms`);
519
520
  imposto.ICMS = r.grupo;
520
521
  icms = r.totais;
521
- } else if (imp.issqn === undefined && imp.ibsCbs === undefined) {
522
+ } else if (imp.issqn === undefined && imp.ibsCbs === undefined && !semIe) {
523
+ // Na NF-e sem IE do emitente a falta de ICMS e ISSQN é a exceção 2 da RV B25-90 (NT 2026.007); a falta do grupo
524
+ // IBS/CBS sai como a 162, no caminho dele.
522
525
  ctx.issues.add(`${ip}.icms`, 'campo_obrigatorio', 'o item precisa de ICMS (ou ISSQN, na NF-e conjugada)');
523
526
  }
524
527
  if (imp.ii !== undefined) {
@@ -628,7 +631,10 @@ export async function montarNfe(entrada: DadosNfe, opcoes: MontarNfeOpcoes): Pro
628
631
  const nfce = mod === '65';
629
632
  // Padrões da identificação resolvidos uma vez: o mesmo valor vai para o ide e para a calculadora de IBS/CBS. A NFC-e
630
633
  // é presencial e para consumidor final (MOC 7.0 Anexo I, B25a-10 e B25b-20).
631
- const indPres = entrada.indPres ?? (nfce ? '1' : finNFeIn === '2' || finNFeIn === '3' ? '0' : '9');
634
+ // NF-e com DANFE Simplificado Tipo 2 (tpImp 6): parte das regras da NFC-e vale para ela (NT 2026.002 v1.11).
635
+ const tipo2 = !nfce && entrada.tpImp === '6';
636
+ // Na NFC-e e na Tipo 2 a operação é presencial ou entrega a domicílio (B25b-20, rejeição 717): o padrão é 1.
637
+ const indPres = entrada.indPres ?? (nfce || tipo2 ? '1' : finNFeIn === '2' || finNFeIn === '3' ? '0' : '9');
632
638
  const indFinal = entrada.indFinal ?? (nfce || entrada.destinatario?.indIEDest === '9' ? '1' : '0');
633
639
  const ctx = new Ctx(issues, { ...MODES, ...opcoes.arredondamento }, finNFeIn !== '2' && finNFeIn !== '3');
634
640
  const pRedutorGov = entrada.gCompraGov && ctx.req(entrada.gCompraGov.pRedutor, 'gCompraGov.pRedutor', D0302A04);
@@ -748,11 +754,11 @@ export async function montarNfe(entrada: DadosNfe, opcoes: MontarNfeOpcoes): Pro
748
754
  if (cont.dhCont.getTime() > agora.getTime()) {
749
755
  issues.add('contingencia.dhCont', 'contingencia_invalida', 'entrada em contingência posterior à emissão');
750
756
  }
751
- if (!nfce && tpEmis === '9') {
757
+ if (!nfce && tpEmis === '9' && (entrada.tpImp ?? '1') !== '6') {
752
758
  issues.add(
753
759
  'contingencia.tpEmis',
754
760
  'contingencia_invalida',
755
- 'contingência off-line (tpEmis 9) é só da NFC-e (B22-10, rejeição 711)',
761
+ 'contingência off-line (tpEmis 9) é da NFC-e e da NF-e com DANFE Simplificado Tipo 2, tpImp 6 (B22-10, rejeição 711)',
756
762
  );
757
763
  }
758
764
  if (nfce && (tpEmis === '6' || tpEmis === '7')) {
@@ -765,9 +771,11 @@ export async function montarNfe(entrada: DadosNfe, opcoes: MontarNfeOpcoes): Pro
765
771
  }
766
772
 
767
773
  // Identificação que as regras do modelo conferem antes de montar.
768
- // Na NFC-e a operação é sempre interna (B11a-10, rejeição 707): o endereço do consumidor não a torna interestadual.
774
+ // Na NFC-e e na Tipo 2 a operação é sempre interna (B11a-10, rejeição 707): o endereço do consumidor não a torna
775
+ // interestadual.
769
776
  const idDest =
770
- entrada.idDest ?? (nfce ? '1' : destUf === 'EX' ? '3' : destUf !== undefined && destUf !== emitUf ? '2' : '1');
777
+ entrada.idDest ??
778
+ (nfce || tipo2 ? '1' : destUf === 'EX' ? '3' : destUf !== undefined && destUf !== emitUf ? '2' : '1');
771
779
  const tpImp = entrada.tpImp ?? (nfce ? '4' : '1');
772
780
  conferirDestinatario(
773
781
  entrada,
@@ -781,10 +789,11 @@ export async function montarNfe(entrada: DadosNfe, opcoes: MontarNfeOpcoes): Pro
781
789
  },
782
790
  issues,
783
791
  );
784
- if (nfce) {
792
+ if (nfce || tipo2) {
785
793
  conferirNfce(
786
794
  entrada,
787
795
  {
796
+ mod: nfce ? '65' : '55',
788
797
  tpNF: entrada.tpNF,
789
798
  idDest,
790
799
  tpImp,
@@ -797,7 +806,17 @@ export async function montarNfe(entrada: DadosNfe, opcoes: MontarNfeOpcoes): Pro
797
806
  } else if (tpImp === '4' || tpImp === '5') {
798
807
  issues.add('tpImp', 'campo_invalido', 'tpImp 4 e 5 (DANFC-e) são da NFC-e (B21-20, rejeição 710)');
799
808
  }
809
+ // QR Code no infNFeSupl: NFC-e e NF-e com DANFE Simplificado Tipo 2 (NT 2026.002 v1.11, ZX02-10), esta só na versão 3
810
+ // (ZX02-220, rejeição 672) e com a URL da NFC-e da UF (ZX02-20, observação 3).
811
+ const comQr = nfce || tpImp === '6';
800
812
  const qr: QrCodeNfceOpcoes = opcoes.qrCode ?? { versao: '3' };
813
+ if (!nfce && comQr && qr.versao === '2') {
814
+ issues.montagem(
815
+ 'qrCode.versao',
816
+ 'qrcode_invalido',
817
+ 'a NF-e com DANFE Simplificado Tipo 2 usa só o QR Code versão 3 (ZX02-220, rejeição 672)',
818
+ );
819
+ }
801
820
  if (nfce && qr.versao === '2') {
802
821
  // O CSC e o idCSC são opções do montador, não da nota: as ocorrências são da montagem (ADR 0011).
803
822
  if (!/^\d{1,6}$/.test(qr.idCSC) || Number(qr.idCSC) === 0) {
@@ -844,11 +863,12 @@ export async function montarNfe(entrada: DadosNfe, opcoes: MontarNfeOpcoes): Pro
844
863
  if (entrada.itens.length === 0 || entrada.itens.length > 990) {
845
864
  issues.add('itens', 'itens_limite', 'a NF-e tem de 1 a 990 itens');
846
865
  }
847
- const itens = entrada.itens.map((it, n) => montarItem(ctx, it, n, finNFeIn === '1'));
848
- // Na NFC-e em homologação, a descrição do primeiro item é a literal da RV I04-10, como o nome do destinatário da
849
- // E04-20: o builder a põe, e a descrição informada fica fora do XML de teste.
866
+ const semIe = !nfce && entrada.emitente.IE === undefined;
867
+ const itens = entrada.itens.map((it, n) => montarItem(ctx, it, n, finNFeIn === '1', semIe));
868
+ // Na NFC-e e na Tipo 2 (NT 2026.002) em homologação, a descrição do primeiro item é a literal da RV I04-10, como o
869
+ // nome do destinatário da E04-20: o builder a põe, e a descrição informada fica fora do XML de teste.
850
870
  const primeiro = itens[0];
851
- if (nfce && opcoes.ambiente === 'homologacao' && primeiro !== undefined) {
871
+ if ((nfce || tipo2) && opcoes.ambiente === 'homologacao' && primeiro !== undefined) {
852
872
  (primeiro.det.prod as unknown as Record<string, unknown>).xProd = XPROD_HOMOLOGACAO_NFCE;
853
873
  }
854
874
 
@@ -972,11 +992,16 @@ export async function montarNfe(entrada: DadosNfe, opcoes: MontarNfeOpcoes): Pro
972
992
  });
973
993
  // Texto e tamanho dos campos de texto pelo tipo do PL, com o caminho da entrada (ADR 0011); o campo que outra
974
994
  // conferência já recusou fica só com a ocorrência dela.
975
- // Em homologação, o nome do destinatário e, na NFC-e, a descrição do primeiro item são as literais da E04-20 e da I04-10:
976
- // o texto informado não vai ao XML.
995
+ // Em homologação, o nome do destinatário e, na NFC-e e na Tipo 2, a descrição do primeiro item são as literais da E04-20
996
+ // e da I04-10: o texto informado não vai ao XML.
977
997
  const substituidos =
978
- opcoes.ambiente === 'homologacao' ? ['destinatario.xNome', ...(nfce ? ['itens[0].produto.xProd'] : [])] : [];
998
+ opcoes.ambiente === 'homologacao'
999
+ ? ['destinatario.xNome', ...(nfce || tipo2 ? ['itens[0].produto.xProd'] : [])]
1000
+ : [];
979
1001
  conferirTextosDaEntrada(entrada, pl.infNFe as ComplexType, issues, new Set(substituidos));
1002
+ // Nota sem IE do emitente (NT 2026.007, ADR 0012): conferida antes de parar nas ocorrências dos itens, para todas as
1003
+ // violações voltarem juntas.
1004
+ exclusivoIbsCbs(entrada, { nfce, dhEmi, instantes: [agora, fatoGerador] }, issues);
980
1005
  if (!issues.empty) return { ok: false, ocorrencias: issues.classificadas };
981
1006
 
982
1007
  // Totais (grupo W)
@@ -1272,6 +1297,7 @@ export async function montarNfe(entrada: DadosNfe, opcoes: MontarNfeOpcoes): Pro
1272
1297
  pagamentoNfce(pag, vNF, issues);
1273
1298
  }
1274
1299
  // W16-40 (rejeição 750): acima do limite, a NFC-e identifica o destinatário por CNPJ, CPF ou idEstrangeiro.
1300
+ // Na Tipo 2 a W16-40 não tem o que conferir: a NF-e sempre identifica o destinatário (E01-10, rejeição 719).
1275
1301
  if (nfce && vNF.gt(Decimal.of(NFCE_LIMITE_SEM_DESTINATARIO)) && dest === undefined) {
1276
1302
  issues.add(
1277
1303
  'destinatario',
@@ -1341,6 +1367,10 @@ export async function montarNfe(entrada: DadosNfe, opcoes: MontarNfeOpcoes): Pro
1341
1367
 
1342
1368
  // Regras da SEFAZ que só dependem do documento (ADR 0012).
1343
1369
  cstComIsento(entrada, idDest, issues);
1370
+ if (!nfce) {
1371
+ cfopDeDevolucao(entrada, issues);
1372
+ cstComNaoContribuinte(entrada, { idDest, uf: emitUf }, issues);
1373
+ }
1344
1374
  vencimentos(entrada, { dhEmi, instante: agora }, issues);
1345
1375
 
1346
1376
  camposForaDoPl(pl.infNFe, inf, 'infNFe', pl.vigencia.pl, issues);
@@ -1375,8 +1405,9 @@ export async function montarNfe(entrada: DadosNfe, opcoes: MontarNfeOpcoes): Pro
1375
1405
  };
1376
1406
  }
1377
1407
  let supl: NfceSupl | undefined;
1378
- if (nfce) {
1379
- // infNFeSupl (grupo ZX, NT 2025.001 item 04): endereços da UF no dia da emissão, pelo horário de Brasília.
1408
+ if (comQr) {
1409
+ // infNFeSupl (grupo ZX, NT 2025.001 item 04 e NT 2026.002): endereços da NFC-e da UF no dia da emissão, pelo horário
1410
+ // de Brasília, também na NF-e Tipo 2.
1380
1411
  const tabela = urlsNfce(emitUf, opcoes.ambiente, diaBrasilia(agora));
1381
1412
  const urlQr = opcoes.urlQrCode ?? tabela.qrCode;
1382
1413
  const urlChave = opcoes.urlChave ?? tabela.urlChave;
@@ -1456,25 +1487,26 @@ const escapeXml = (s: string): string => s.replace(/&/g, '&amp;').replace(/</g,
1456
1487
  /**
1457
1488
  * Assinatura dos parâmetros do QR Code da NFC-e em contingência off-line com a versão 3 (RSA-SHA1 em Base64, com o
1458
1489
  * certificado que assina a nota; Manual do DANFE NFC-e 6.0, 4.4.2). `undefined` quando o QR Code não leva assinatura
1459
- * (NF-e, emissão normal, versão 2).
1490
+ * (NF-e sem QR Code, emissão normal, versão 2). Vale também para a NF-e com DANFE Simplificado Tipo 2 em contingência
1491
+ * off-line (NT 2026.002).
1460
1492
  */
1461
1493
  export async function assinaturaQrCode(nota: NfeMontada, assinador: Assinador): Promise<string | undefined> {
1462
1494
  return nota.nfce?.assinar === true ? assinarParametros(nota.nfce.parametros, assinador) : undefined;
1463
1495
  }
1464
1496
 
1465
1497
  /**
1466
- * A NFC-e montada com o `infNFeSupl` (QR Code e `urlChave`) inserido por splice antes do fechamento de `NFe`, pronta
1498
+ * A NFC-e, ou a NF-e com DANFE Simplificado Tipo 2 (tpImp 6, NT 2026.002), montada com o `infNFeSupl` (QR Code e `urlChave`) inserido por splice antes do fechamento de `NFe`, pronta
1467
1499
  * para a assinatura. Na versão 3 em contingência off-line, informe a `assinatura` (`assinaturaQrCode`); nos demais
1468
1500
  * casos ela não existe (ZX02-330, rejeição 445; ZX02-334, rejeição 474). Para assinar em três fases (A3, HSM), passe
1469
- * este texto ao `prepararAssinatura` do `@sinete/core/xml` com o `id` da nota. Na NF-e (modelo 55), devolve o XML como
1470
- * veio: ela não tem `infNFeSupl` (ZX01-10, rejeição 393).
1501
+ * este texto ao `prepararAssinatura` do `@sinete/core/xml` com o `id` da nota. Na NF-e com outro tpImp, devolve o XML como
1502
+ * veio: ela não tem `infNFeSupl`.
1471
1503
  */
1472
1504
  export function comQrCode(nota: NfeMontada, assinatura?: string): string {
1473
1505
  const xml = inserirSupl(nota, assinatura);
1474
1506
  // Com a assinatura verdadeira, o qrCode pode passar do tamanho que a montagem conferiu (chave maior que 2048 bits).
1475
1507
  if (assinatura !== undefined) {
1476
1508
  const issues = conferirSupl(xml);
1477
- if (issues.length > 0) throw new ErroDeValidacao('o QR Code da NFC-e não passou no schema', issues);
1509
+ if (issues.length > 0) throw new ErroDeValidacao('o QR Code não passou no schema', issues);
1478
1510
  }
1479
1511
  return xml;
1480
1512
  }
@@ -1482,19 +1514,20 @@ export function comQrCode(nota: NfeMontada, assinatura?: string): string {
1482
1514
  function inserirSupl(built: NfeMontada, assinatura: string | undefined): string {
1483
1515
  const s = built.nfce;
1484
1516
  if (s === undefined) {
1485
- if (assinatura !== undefined) throw new ErroDeConfiguracao('a NF-e (modelo 55) não tem QR Code');
1517
+ if (assinatura !== undefined)
1518
+ throw new ErroDeConfiguracao('esta NF-e não tem QR Code: só a NF-e com DANFE Simplificado Tipo 2 (tpImp 6) leva');
1486
1519
  return built.xml;
1487
1520
  }
1488
1521
  if (s.assinar && assinatura === undefined) {
1489
1522
  throw new ErroDeConfiguracao(
1490
- 'NFC-e em contingência off-line com QR Code versão 3 precisa da assinatura (ZX02-334, rejeição 474)',
1523
+ 'contingência off-line com QR Code versão 3 precisa da assinatura (ZX02-334, rejeição 474)',
1491
1524
  );
1492
1525
  }
1493
1526
  if (!s.assinar && assinatura !== undefined) {
1494
1527
  throw new ErroDeConfiguracao('este QR Code não leva assinatura (ZX02-330, rejeição 445)');
1495
1528
  }
1496
1529
  const fim = '</NFe>';
1497
- if (!built.xml.endsWith(fim)) throw new ErroDeConfiguracao('NFC-e montada fora da forma esperada');
1530
+ if (!built.xml.endsWith(fim)) throw new ErroDeConfiguracao('nota montada fora da forma esperada');
1498
1531
  const qrCode = `${s.base}${s.parametros}${assinatura === undefined ? '' : `|${assinatura}`}`;
1499
1532
  const supl = `<infNFeSupl><qrCode>${escapeXml(qrCode)}</qrCode><urlChave>${escapeXml(s.urlChave)}</urlChave></infNFeSupl>`;
1500
1533
  return built.xml.slice(0, -fim.length) + supl + fim;
package/src/build/nfce.ts CHANGED
@@ -180,6 +180,8 @@ const TPAG_VEDADOS: Readonly<Record<string, string>> = {
180
180
 
181
181
  /** Identificação já resolvida pelo montador (com os padrões aplicados). */
182
182
  export interface IdeNfce {
183
+ /** 65 é a NFC-e; 55, a NF-e com DANFE Simplificado Tipo 2 (tpImp 6), que a NT 2026.002 põe sob parte destas regras. */
184
+ readonly mod: '55' | '65';
183
185
  readonly tpNF: string;
184
186
  readonly idDest: string;
185
187
  readonly tpImp: string;
@@ -191,21 +193,29 @@ export interface IdeNfce {
191
193
  /**
192
194
  * Regras da NFC-e sobre a entrada (origem `entrada`, ADR 0011), todas de aplicação obrigatória. Grupos que a NFC-e
193
195
  * não tem saem como `grupo_vedado` no caminho da entrada.
196
+ *
197
+ * A NT 2026.002 v1.11 (homologação em 01/07/2026, produção em 03/08/2026) estende parte delas à NF-e com DANFE
198
+ * Simplificado Tipo 2 (`mod` 55, `tpImp` 6): as que a NT escreve "Se NFC-e ou NF-e com DANFE Simplificado Tipo 2". As
199
+ * que ela não cita (data de previsão de entrega, tpImp 4 e 5, cMunFGIBS, compra governamental, o destinatário fora da
200
+ * E01-20, ISSQN, transportador, pagamento e exportação) seguem só da NFC-e (`soNfce`). A G01-10 (local de entrega,
201
+ * 670) fica de fora: a NT a marca como implementação futura.
194
202
  */
195
203
  export function conferirNfce(input: DadosNfe, ide: IdeNfce, issues: Issues): void {
196
- const vedado = (path: string, msg: string): void => issues.add(path, 'grupo_vedado', `NFC-e ${msg}`);
197
- const invalido = (path: string, msg: string): void => issues.add(path, 'campo_invalido', `NFC-e ${msg}`);
204
+ const soNfce = ide.mod === '65';
205
+ const doc = soNfce ? 'NFC-e' : 'NF-e com DANFE Simplificado Tipo 2';
206
+ const vedado = (path: string, msg: string): void => issues.add(path, 'grupo_vedado', `${doc} ${msg}`);
207
+ const invalido = (path: string, msg: string): void => issues.add(path, 'campo_invalido', `${doc} ${msg}`);
198
208
 
199
209
  // B. Identificação
200
210
  if (input.dhSaiEnt !== undefined) vedado('dhSaiEnt', 'sem data de entrada ou saída (B10-10, rejeição 705)');
201
- if (input.dPrevEntrega !== undefined) {
211
+ if (soNfce && input.dPrevEntrega !== undefined) {
202
212
  vedado('dPrevEntrega', 'sem data de previsão de entrega (NT 2025.002, B10a-10, rejeição 1153)');
203
213
  }
204
214
  if (ide.tpNF !== '1') invalido('tpNF', 'só de saída, tpNF 1 (B11-10, rejeição 706)');
205
215
  if (ide.idDest !== '1') {
206
216
  invalido('idDest', 'só em operação interna, idDest 1 (B11a-10, rejeição 707)');
207
217
  }
208
- if (ide.tpImp !== '4' && ide.tpImp !== '5') {
218
+ if (soNfce && ide.tpImp !== '4' && ide.tpImp !== '5') {
209
219
  invalido('tpImp', 'com DANFC-e: tpImp 4 (impresso) ou 5 (mensagem eletrônica) (B21-10, rejeição 709)');
210
220
  }
211
221
  if (ide.finNFe !== '1') invalido('finNFe', 'só com finalidade normal, finNFe 1 (B25-20, rejeição 715)');
@@ -213,13 +223,13 @@ export function conferirNfce(input: DadosNfe, ide: IdeNfce, issues: Issues): voi
213
223
  if (!['1', '4', '5'].includes(ide.indPres)) {
214
224
  invalido('indPres', 'só presencial: indPres 1, 4 (entrega a domicílio) ou 5 (NT 2025.002, B25b-20, rejeição 717)');
215
225
  }
216
- if (input.cMunFGIBS !== undefined && ide.indPres !== '5') {
226
+ if (soNfce && input.cMunFGIBS !== undefined && ide.indPres !== '5') {
217
227
  invalido(
218
228
  'cMunFGIBS',
219
229
  'com cMunFGIBS só em operação presencial fora do estabelecimento, indPres 5 (NT 2025.002, B25b-60, rejeição 1000)',
220
230
  );
221
231
  }
222
- if (input.cMunFGIBS === undefined && ide.indPres === '5') {
232
+ if (soNfce && input.cMunFGIBS === undefined && ide.indPres === '5') {
223
233
  issues.add(
224
234
  'cMunFGIBS',
225
235
  'campo_obrigatorio',
@@ -229,7 +239,7 @@ export function conferirNfce(input: DadosNfe, ide: IdeNfce, issues: Issues): voi
229
239
  if (input.referenciadas !== undefined && input.referenciadas.length > 0) {
230
240
  vedado('referenciadas', 'não referencia documento fiscal (BA01-10, rejeição 708)');
231
241
  }
232
- if (input.gCompraGov !== undefined)
242
+ if (soNfce && input.gCompraGov !== undefined)
233
243
  vedado('gCompraGov', 'sem compra governamental (NT 2025.002, BB01-10, rejeição 1006)');
234
244
 
235
245
  // C. Emitente
@@ -242,17 +252,19 @@ export function conferirNfce(input: DadosNfe, ide: IdeNfce, issues: Issues): voi
242
252
  issues.add(
243
253
  'destinatario',
244
254
  'campo_obrigatorio',
245
- 'NFC-e com entrega a domicílio identifica o destinatário (E01-20, rejeição 787)',
255
+ `${doc} com entrega a domicílio identifica o destinatário (E01-20, rejeição 787)`,
246
256
  );
247
257
  }
248
- if (ide.indPres === '4' && d !== undefined && d.endereco === undefined) {
258
+ // F01-10 (669): sem local de retirada.
259
+ if (input.retirada !== undefined) vedado('retirada', 'sem local de retirada (F01-10, rejeição 669)');
260
+ if (soNfce && ide.indPres === '4' && d !== undefined && d.endereco === undefined) {
249
261
  issues.add(
250
262
  'destinatario.endereco',
251
263
  'campo_obrigatorio',
252
264
  'NFC-e com entrega a domicílio informa o endereço do destinatário (E05-20, rejeição 788)',
253
265
  );
254
266
  }
255
- if (d !== undefined) {
267
+ if (soNfce && d !== undefined) {
256
268
  if (d.CNPJ !== undefined && input.emitente.CNPJ !== undefined && digitos(d.CNPJ) === digitos(input.emitente.CNPJ)) {
257
269
  invalido('destinatario.CNPJ', 'com destinatário igual ao emitente (E02-20, rejeição 220)');
258
270
  }
@@ -271,7 +283,10 @@ export function conferirNfce(input: DadosNfe, ide: IdeNfce, issues: Issues): voi
271
283
  if (esp.arma !== undefined) vedado(`${p}.produto.especifico.arma`, 'sem armamento (L01-10, rejeição 738)');
272
284
  if (esp.nRECOPI !== undefined)
273
285
  vedado(`${p}.produto.especifico.nRECOPI`, 'sem papel imune RECOPI (LB01-10, rejeição 348)');
274
- if (it.produto.tpCredPresIBSZFM !== undefined) {
286
+ if (it.produto.indTot === '0') {
287
+ invalido(`${p}.produto.indTot`, 'sem item fora do total, indTot 1 (I17b-10, rejeição 774)');
288
+ }
289
+ if (soNfce && it.produto.tpCredPresIBSZFM !== undefined) {
275
290
  vedado(
276
291
  `${p}.produto.tpCredPresIBSZFM`,
277
292
  'sem classificação para subapuração do IBS na ZFM (NT 2025.002, I05k-10, rejeição 1165)',
@@ -279,14 +294,14 @@ export function conferirNfce(input: DadosNfe, ide: IdeNfce, issues: Issues): voi
279
294
  }
280
295
  const cfop = it.produto.CFOP.replace(/\D/g, '');
281
296
  const imp = it.impostos;
282
- if (cfop === CFOP_ISSQN && imp.issqn === undefined) {
297
+ if (soNfce && cfop === CFOP_ISSQN && imp.issqn === undefined) {
283
298
  issues.add(
284
299
  `${p}.impostos.issqn`,
285
300
  'combinacao_invalida',
286
301
  'NFC-e com CFOP 5.933 tem o grupo do ISSQN (I08-160, rejeição 374)',
287
302
  );
288
303
  }
289
- if (cfop !== CFOP_ISSQN && imp.issqn !== undefined) {
304
+ if (soNfce && cfop !== CFOP_ISSQN && imp.issqn !== undefined) {
290
305
  issues.add(
291
306
  `${p}.produto.CFOP`,
292
307
  'combinacao_invalida',
@@ -314,10 +329,10 @@ export function conferirNfce(input: DadosNfe, ide: IdeNfce, issues: Issues): voi
314
329
  if (tr !== undefined && tr.modFrete !== '9' && !entrega) {
315
330
  invalido('transporte.modFrete', 'sem frete fora da entrega a domicílio: modFrete 9 (X02-10, rejeição 753)');
316
331
  }
317
- if (tr?.transportador !== undefined && !entrega) {
332
+ if (soNfce && tr?.transportador !== undefined && !entrega) {
318
333
  vedado('transporte.transportador', 'só tem transportador na entrega a domicílio (X03-10, rejeição 754)');
319
334
  }
320
- if (entrega && tr?.transportador === undefined) {
335
+ if (soNfce && entrega && tr?.transportador === undefined) {
321
336
  issues.add(
322
337
  'transporte.transportador',
323
338
  'campo_obrigatorio',
@@ -331,6 +346,17 @@ export function conferirNfce(input: DadosNfe, ide: IdeNfce, issues: Issues): voi
331
346
 
332
347
  // Y e YA. Cobrança e pagamento
333
348
  if (input.cobranca !== undefined) vedado('cobranca', 'sem fatura nem duplicata (Y01-10, rejeição 760)');
349
+ // O pagamento é só da NFC-e: a NT 2026.002 não estende as regras do grupo YA à Tipo 2.
350
+ if (soNfce) conferirPagamentoNfce(input, issues);
351
+
352
+ // Z. Grupos que a NFC-e não tem
353
+ if (soNfce && input.exporta !== undefined) vedado('exporta', 'sem comércio exterior (ZA01-30, rejeição 814)');
354
+ if (input.compra !== undefined) vedado('compra', 'sem dados de compra (ZB01-10, rejeição 762)');
355
+ if (input.cana !== undefined) vedado('cana', 'sem aquisição de cana (ZC01-10, rejeição 763)');
356
+ }
357
+
358
+ /** Pagamento informado na NFC-e: obrigatório, sem os meios vedados e com o grupo do cartão quando pede. */
359
+ function conferirPagamentoNfce(input: DadosNfe, issues: Issues): void {
334
360
  if (input.pagamento === undefined || input.pagamento.detPag.length === 0) {
335
361
  issues.add(
336
362
  'pagamento',
@@ -351,11 +377,6 @@ export function conferirNfce(input: DadosNfe, ide: IdeNfce, issues: Issues): voi
351
377
  }
352
378
  });
353
379
  }
354
-
355
- // Z. Grupos que a NFC-e não tem
356
- if (input.exporta !== undefined) vedado('exporta', 'sem comércio exterior (ZA01-30, rejeição 814)');
357
- if (input.compra !== undefined) vedado('compra', 'sem dados de compra (ZB01-10, rejeição 762)');
358
- if (input.cana !== undefined) vedado('cana', 'sem aquisição de cana (ZC01-10, rejeição 763)');
359
380
  }
360
381
 
361
382
  /** O `pag` montado, na forma que as regras de pagamento leem e completam. */