@sinete/nfe 0.1.0 → 0.2.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 (87) hide show
  1. package/README.md +49 -48
  2. package/dist/build/build.d.ts +23 -23
  3. package/dist/build/build.d.ts.map +1 -1
  4. package/dist/build/destinatario.d.ts +2 -2
  5. package/dist/build/ibscbs.d.ts.map +1 -1
  6. package/dist/build/nfce.d.ts +5 -5
  7. package/dist/build/nfce.d.ts.map +1 -1
  8. package/dist/build/pl.d.ts +4 -4
  9. package/dist/build/pl.d.ts.map +1 -1
  10. package/dist/build/rejeicoes.d.ts +7 -7
  11. package/dist/build/rejeicoes.d.ts.map +1 -1
  12. package/dist/build/values.d.ts +8 -8
  13. package/dist/build/values.d.ts.map +1 -1
  14. package/dist/decimal.d.ts +2 -2
  15. package/dist/decimal.d.ts.map +1 -1
  16. package/dist/format.d.ts +19 -19
  17. package/dist/format.d.ts.map +1 -1
  18. package/dist/ibs-cbs.d.ts +5 -5
  19. package/dist/ibs-cbs.d.ts.map +1 -1
  20. package/dist/ibs-cbs.js +35 -35
  21. package/dist/ibs-cbs.js.map +2 -2
  22. package/dist/index.d.ts +18 -18
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +602 -573
  25. package/dist/index.js.map +25 -25
  26. package/dist/issues.d.ts +10 -10
  27. package/dist/issues.d.ts.map +1 -1
  28. package/dist/model.d.ts +4 -4
  29. package/dist/ports.d.ts +15 -15
  30. package/dist/ports.d.ts.map +1 -1
  31. package/dist/rotulo.d.ts +2 -2
  32. package/dist/rotulo.d.ts.map +1 -1
  33. package/dist/rtc.d.ts +23 -23
  34. package/dist/rtc.d.ts.map +1 -1
  35. package/dist/services/client.d.ts +44 -40
  36. package/dist/services/client.d.ts.map +1 -1
  37. package/dist/services/gzip.d.ts +1 -1
  38. package/dist/services/gzip.d.ts.map +1 -1
  39. package/dist/services/index.d.ts +4 -4
  40. package/dist/services/index.d.ts.map +1 -1
  41. package/dist/services/outcome.d.ts +3 -3
  42. package/dist/services/outcome.d.ts.map +1 -1
  43. package/dist/services/proc.d.ts +6 -6
  44. package/dist/services/proc.d.ts.map +1 -1
  45. package/dist/services/recuperar.d.ts +7 -7
  46. package/dist/services/recuperar.d.ts.map +1 -1
  47. package/dist/services/resolver.d.ts +10 -10
  48. package/dist/services/resolver.d.ts.map +1 -1
  49. package/dist/services/soap.d.ts +8 -8
  50. package/dist/services/soap.d.ts.map +1 -1
  51. package/dist/time.d.ts +4 -4
  52. package/dist/time.d.ts.map +1 -1
  53. package/dist/versao-gerada.d.ts +1 -1
  54. package/package.json +9 -9
  55. package/src/build/build.ts +202 -185
  56. package/src/build/destinatario.ts +8 -8
  57. package/src/build/ibscbs.ts +10 -6
  58. package/src/build/icms.ts +6 -6
  59. package/src/build/nfce.ts +19 -19
  60. package/src/build/pl.ts +12 -12
  61. package/src/build/rejeicoes.ts +13 -13
  62. package/src/build/values.ts +14 -14
  63. package/src/data/arredondamento.json +1 -1
  64. package/src/data/cstat.json +6 -6
  65. package/src/data/fusos.json +1 -1
  66. package/src/data/nfce-urls.json +2 -2
  67. package/src/data/produtor-rural.json +1 -1
  68. package/src/data/resp-tec.json +1 -1
  69. package/src/decimal.ts +10 -9
  70. package/src/format.ts +29 -28
  71. package/src/ibs-cbs.ts +74 -74
  72. package/src/index.ts +29 -27
  73. package/src/issues.ts +11 -11
  74. package/src/model.ts +4 -4
  75. package/src/ports.ts +15 -15
  76. package/src/rotulo.ts +4 -4
  77. package/src/rtc.ts +91 -91
  78. package/src/services/client.ts +248 -217
  79. package/src/services/gzip.ts +7 -7
  80. package/src/services/index.ts +12 -10
  81. package/src/services/outcome.ts +9 -9
  82. package/src/services/proc.ts +50 -49
  83. package/src/services/recuperar.ts +27 -25
  84. package/src/services/resolver.ts +22 -22
  85. package/src/services/soap.ts +35 -35
  86. package/src/time.ts +6 -6
  87. package/src/versao-gerada.ts +1 -1
package/src/format.ts CHANGED
@@ -5,60 +5,61 @@
5
5
 
6
6
  import type { Decimal, RoundingMode } from './decimal.ts';
7
7
 
8
- export interface DecimalFormat {
8
+ export interface FormatoDecimal {
9
9
  /** Nome curto, para mensagens. */
10
- readonly name: string;
10
+ readonly nome: string;
11
11
  /** Casas mínimas (completa com zeros até aqui). */
12
12
  readonly min: number;
13
13
  /** Casas máximas aceitas pelo pattern. */
14
14
  readonly max: number;
15
15
  /** Casas exigidas quando a parte inteira é zero e o valor não é zero (`TDec_0803v`: `0\.[0-9]{3}`). */
16
- readonly minBelowOne?: number;
16
+ readonly minimoAbaixoDeUm?: number;
17
17
  /** O pattern recusa zero (`TDec_1302Opc`, `TDec_0302a04Opc`): o campo zerado deve ser omitido. */
18
- readonly nonZero?: boolean;
18
+ readonly naoNulo?: boolean;
19
19
  /** Maior quantidade de dígitos inteiros aceita. */
20
- readonly intDigits: number;
20
+ readonly digitosInteiros: number;
21
21
  }
22
22
 
23
23
  /** `TDec_1302`, `TDec1302RTC`: 13 inteiros e exatamente 2 casas. */
24
- export const D1302: DecimalFormat = { name: 'TDec_1302', min: 2, max: 2, intDigits: 13 };
24
+ export const D1302: FormatoDecimal = { nome: 'TDec_1302', min: 2, max: 2, digitosInteiros: 13 };
25
25
  /** `TDec_1302Opc`: como `TDec_1302`, sem zero. */
26
- export const D1302_OPC: DecimalFormat = { name: 'TDec_1302Opc', min: 2, max: 2, intDigits: 13, nonZero: true };
26
+ export const D1302_OPC: FormatoDecimal = { nome: 'TDec_1302Opc', min: 2, max: 2, digitosInteiros: 13, naoNulo: true };
27
27
  /** `TDec_0302a04`, `TDec_0302_04RTC`, `TDec_0302a04Max100`: 3 inteiros e 2 a 4 casas. */
28
- export const D0302A04: DecimalFormat = { name: 'TDec_0302a04', min: 2, max: 4, intDigits: 3 };
28
+ export const D0302A04: FormatoDecimal = { nome: 'TDec_0302a04', min: 2, max: 4, digitosInteiros: 3 };
29
29
  /** `TDec_0302a04Opc`: o pattern (`0\.[0-9]{2,4}|...`) aceita zero, ao contrário de `TDec_1302Opc`. */
30
- export const D0302A04_OPC: DecimalFormat = { name: 'TDec_0302a04Opc', min: 2, max: 4, intDigits: 3 };
30
+ export const D0302A04_OPC: FormatoDecimal = { nome: 'TDec_0302a04Opc', min: 2, max: 4, digitosInteiros: 3 };
31
31
  /** `TDec_0302Max100`: 2 casas exatas. */
32
- export const D0302: DecimalFormat = { name: 'TDec_0302Max100', min: 2, max: 2, intDigits: 3 };
32
+ export const D0302: FormatoDecimal = { nome: 'TDec_0302Max100', min: 2, max: 2, digitosInteiros: 3 };
33
33
  /** `TDec_1104v`: 11 inteiros e 0 a 4 casas. */
34
- export const D1104V: DecimalFormat = { name: 'TDec_1104v', min: 0, max: 4, intDigits: 11 };
34
+ export const D1104V: FormatoDecimal = { nome: 'TDec_1104v', min: 0, max: 4, digitosInteiros: 11 };
35
35
  /** `TDec_1104`, `TDec1104RTC`: 11 inteiros e 4 casas. */
36
- export const D1104: DecimalFormat = { name: 'TDec_1104', min: 4, max: 4, intDigits: 11 };
36
+ export const D1104: FormatoDecimal = { nome: 'TDec_1104', min: 4, max: 4, digitosInteiros: 11 };
37
37
  /** `TDec_1110v`: 11 inteiros e 0 a 10 casas. */
38
- export const D1110V: DecimalFormat = { name: 'TDec_1110v', min: 0, max: 10, intDigits: 11 };
38
+ export const D1110V: FormatoDecimal = { nome: 'TDec_1110v', min: 0, max: 10, digitosInteiros: 11 };
39
39
  /** `TDec_1204v`: 12 inteiros e 0 a 4 casas. */
40
- export const D1204V: DecimalFormat = { name: 'TDec_1204v', min: 0, max: 4, intDigits: 12 };
40
+ export const D1204V: FormatoDecimal = { nome: 'TDec_1204v', min: 0, max: 4, digitosInteiros: 12 };
41
41
  /** `TDec_1204`: 12 inteiros e 4 casas quando há fração (4 fixas aqui, que o pattern aceita sempre). */
42
- export const D1204: DecimalFormat = { name: 'TDec_1204', min: 4, max: 4, intDigits: 12 };
42
+ export const D1204: FormatoDecimal = { nome: 'TDec_1204', min: 4, max: 4, digitosInteiros: 12 };
43
43
  /** `TDec_1203`: 12 inteiros e 3 casas. */
44
- export const D1203: DecimalFormat = { name: 'TDec_1203', min: 3, max: 3, intDigits: 12 };
44
+ export const D1203: FormatoDecimal = { nome: 'TDec_1203', min: 3, max: 3, digitosInteiros: 12 };
45
45
  /** `TDec_0803v`: 8 inteiros e até 3 casas; abaixo de 1, exatamente 3. */
46
- export const D0803V: DecimalFormat = { name: 'TDec_0803v', min: 0, max: 3, intDigits: 8, minBelowOne: 3 };
46
+ export const D0803V: FormatoDecimal = { nome: 'TDec_0803v', min: 0, max: 3, digitosInteiros: 8, minimoAbaixoDeUm: 3 };
47
47
 
48
48
  /** Texto do valor já arredondado no formato (arredonda em `max` casas pelo modo dado). */
49
- export function formatDecimal(value: Decimal, format: DecimalFormat, mode: RoundingMode = 'HALF_UP'): string {
50
- const r = value.round(format.max, mode);
51
- let places = Math.max(format.min, Math.min(format.max, r.significantScale()));
52
- if (format.minBelowOne !== undefined && !r.isZero() && r.abs().lt(1)) places = Math.max(places, format.minBelowOne);
53
- return r.toFixed(places, mode);
49
+ export function formatarDecimal(valor: Decimal, formato: FormatoDecimal, modo: RoundingMode = 'HALF_UP'): string {
50
+ const r = valor.round(formato.max, modo);
51
+ let places = Math.max(formato.min, Math.min(formato.max, r.significantScale()));
52
+ if (formato.minimoAbaixoDeUm !== undefined && !r.isZero() && r.abs().lt(1))
53
+ places = Math.max(places, formato.minimoAbaixoDeUm);
54
+ return r.toFixed(places, modo);
54
55
  }
55
56
 
56
57
  /** Por que o valor não cabe no formato, ou `undefined` se cabe sem perder dígitos. */
57
- export function formatProblem(value: Decimal, format: DecimalFormat): string | undefined {
58
- if (value.isNegative()) return 'valor negativo';
59
- if (format.nonZero && value.isZero()) return 'valor zero não é aceito neste campo';
60
- if (value.significantScale() > format.max) return `mais de ${format.max} casas decimais`;
61
- const intDigits = value.round(0, 'DOWN').abs().toString().replace(/^0$/, '').length;
62
- if (intDigits > format.intDigits) return `mais de ${format.intDigits} dígitos inteiros`;
58
+ export function problemaDeFormato(valor: Decimal, formato: FormatoDecimal): string | undefined {
59
+ if (valor.isNegative()) return 'valor negativo';
60
+ if (formato.naoNulo && valor.isZero()) return 'valor zero não é aceito neste campo';
61
+ if (valor.significantScale() > formato.max) return `mais de ${formato.max} casas decimais`;
62
+ const intDigits = valor.round(0, 'DOWN').abs().toString().replace(/^0$/, '').length;
63
+ if (intDigits > formato.digitosInteiros) return `mais de ${formato.digitosInteiros} dígitos inteiros`;
63
64
  return undefined;
64
65
  }
package/src/ibs-cbs.ts CHANGED
@@ -3,87 +3,87 @@
3
3
  * `@sinete/ibs-cbs-dados` diretamente.
4
4
  *
5
5
  * Reexporta o motor inteiro (`@sinete/ibs-cbs`: alíquotas, cálculo, regras da NT 2025.002 e determinação de CST e
6
- * cClassTrib) e o leitor do dataset (`@sinete/ibs-cbs-dados`: `loadDataset`, `verifyDataset`, diff, tipos). O dataset
6
+ * cClassTrib) e o leitor do dataset (`@sinete/ibs-cbs-dados`: `carregarDataset`, `conferirDataset`, diff, tipos). O dataset
7
7
  * embarcado não entra aqui, para não ir para o bundle de quem não o usa: `carregarDatasetEmbarcado()`, na raiz do
8
- * `@sinete/nfe`, o importa sob demanda. `Dec`, `IsoDate` e `Validity` vêm do motor (os de `Dec` e `IsoDate` são os
9
- * mesmos; a `Validity` dos dados, com os campos do dataset, fica acessível pelos tipos que a usam).
8
+ * `@sinete/nfe`, o importa sob demanda. `Dec`, `DataIso` e `Vigencia` vêm do motor (os de `Dec` e `DataIso` são os
9
+ * mesmos; a `Vigencia` dos dados, com os campos do dataset, fica acessível pelos tipos que a usam).
10
10
  */
11
11
 
12
12
  // biome-ignore lint/performance/noReExportAll: o subpath existe para reexportar o motor inteiro, e as duas pontas são do mesmo repo.
13
13
  export * from '@sinete/ibs-cbs';
14
14
  export type {
15
- ActorClassTribRecord,
16
- ActorFilter,
17
- ActorGroupRecord,
18
- ActorRecord,
19
- ActorRole,
20
- AnnexRecord,
21
- Applicability,
22
- ApplicabilityRecord,
23
- ApplicabilityResult,
24
- ByTributo,
25
- CbsTransferRecord,
26
- ChangeKind,
27
- ClassTribCredit,
28
- ClassTribFilter,
29
- ClassTribGroups,
30
- ClassTribLegal,
31
- ClassTribRecord,
32
- CredPresCalculation,
33
- CredPresGroups,
34
- CredPresInForce,
35
- CredPresRates,
36
- CredPresRecord,
37
- CstGroups,
38
- CstRecord,
39
- DataSource,
40
- DatasetBundle,
41
- DatasetDiff,
42
- DatasetManifest,
43
- DatasetTables,
44
- DfeLink,
45
- DfeTypeRecord,
46
- Family,
47
- FieldChange,
48
- FixedRateRecord,
49
- GovPurchaseReducerRecord,
50
- IbsCbsDataErrorCode,
51
- IbsCbsDataset,
52
- Indicator,
53
- LegalBasis,
54
- NfseNbsRecord,
55
- Nomenclature,
56
- PrefixException,
57
- RateKind,
58
- RecordChange,
59
- ReductionRecord,
60
- SourceId,
61
- TableDiff,
62
- TableManifest,
63
- TableName,
64
- TaxContent,
65
- TreatmentExpressions,
66
- TreatmentFlags,
67
- TreatmentLink,
68
- TreatmentRecord,
15
+ AliquotasCredPres,
16
+ Aplicabilidade,
17
+ BaseLegal,
18
+ BaseLegalClassTrib,
19
+ BundleDoDataset,
20
+ CalculoCredPres,
21
+ CodigoErroDadosIbsCbs,
22
+ ConteudoTributario,
23
+ CreditoClassTrib,
24
+ CredPresVigente,
25
+ DatasetIbsCbs,
26
+ DiferencaDeDatasets,
27
+ DiferencaDeTabela,
28
+ ExcecaoDePrefixo,
29
+ ExpressoesDoTratamento,
30
+ Familia,
31
+ FiltroClassTrib,
32
+ FiltroDeAtores,
33
+ FonteDoDataset,
34
+ GruposClassTrib,
35
+ GruposCredPres,
36
+ GruposCst,
37
+ IdDaFonte,
38
+ Indicador,
39
+ IndicadoresDoTratamento,
40
+ ManifestoDaTabela,
41
+ ManifestoDoDataset,
42
+ MudancaDeCampo,
43
+ MudancaDeRegistro,
44
+ NomeDaTabela,
45
+ Nomenclatura,
46
+ PapelDoAtor,
47
+ PorTributo,
48
+ RegistroAliquotaFixa,
49
+ RegistroAnexo,
50
+ RegistroAplicabilidade,
51
+ RegistroAtor,
52
+ RegistroAtorClassTrib,
53
+ RegistroClassTrib,
54
+ RegistroCredPres,
55
+ RegistroCst,
56
+ RegistroGrupoDeAtores,
57
+ RegistroNfseNbs,
58
+ RegistroReducao,
59
+ RegistroRedutorCompraGov,
60
+ RegistroTipoDfe,
61
+ RegistroTransferenciaCbs,
62
+ RegistroTratamento,
63
+ ResultadoAplicabilidade,
64
+ TabelasDoDataset,
65
+ TipoDeAliquota,
66
+ TipoDeMudanca,
69
67
  Tributo,
68
+ VinculoDfe,
69
+ VinculoTratamento,
70
70
  } from '@sinete/ibs-cbs-dados';
71
71
  export {
72
- applicability,
73
- BRASILIA_OFFSET_MINUTES,
74
- canonicalJson,
75
- canonicalTable,
76
- changeKind,
77
- civilDate,
78
- contentVersionOf,
79
- DATA_SCHEMA_VERSION,
80
- diffDatasets,
81
- formatDiff,
82
- IbsCbsDataError,
83
- inForce,
84
- isIsoDate,
85
- loadDataset,
86
- requireIsoDate,
87
- TABLE_NAMES,
88
- verifyDataset,
72
+ aplicabilidade,
73
+ carregarDataset,
74
+ compararDatasets,
75
+ conferirDataset,
76
+ DESLOCAMENTO_BRASILIA_MIN,
77
+ dataCivil,
78
+ ErroDadosIbsCbs,
79
+ ehDataIso,
80
+ exigirDataIso,
81
+ formatarDiferenca,
82
+ jsonCanonico,
83
+ NOMES_DAS_TABELAS,
84
+ tabelaCanonica,
85
+ tipoDeMudanca,
86
+ VERSAO_DO_FORMATO_DOS_DADOS,
87
+ versaoDoConteudo,
88
+ vigente,
89
89
  } from '@sinete/ibs-cbs-dados';
package/src/index.ts CHANGED
@@ -1,25 +1,25 @@
1
1
  /**
2
- * `@sinete/nfe`: NF-e modelo 55 e NFC-e modelo 65. Entrada do domínio (`NfeInput`), montagem com totais em decimal exato e validação
3
- * estrita (`buildNfe`), assinatura por splice (`signNfe`) e os serviços da SEFAZ sobre `@sinete/transport`
4
- * (`createNfeClient`). IBS/CBS pelo motor do sinete por padrão (`ibsCbsCalculator`), com o dataset carregado sob
2
+ * `@sinete/nfe`: NF-e modelo 55 e NFC-e modelo 65. Entrada do domínio (`DadosNfe`), montagem com totais em decimal exato e validação
3
+ * estrita (`montarNfe`), assinatura por splice (`assinarNfe`) e os serviços da SEFAZ sobre `@sinete/transport`
4
+ * (`criarClienteNfe`). IBS/CBS pelo motor do sinete por padrão (`calculadoraIbsCbs`), com o dataset carregado sob
5
5
  * demanda. O emissor (bytes gravados antes do envio, trava, retomada, cancelamento com recuperação) está em
6
6
  * `@sinete/emissor/nfe` (ADR 0010).
7
7
  */
8
8
 
9
9
  export type {
10
- BuildNfeOptions,
11
- BuildNfeResult,
12
- BuiltNfe,
13
10
  ExigenciaRespTec,
11
+ MontarNfeOpcoes,
12
+ NfeMontada,
13
+ ResultadoMontagemNfe,
14
14
  } from './build/build.ts';
15
15
  export {
16
+ assinarNfe,
16
17
  assinaturaQrCode,
17
- buildNfe,
18
18
  comQrCode,
19
19
  exigenciaRespTec,
20
20
  hashCsrt,
21
+ montarNfe,
21
22
  NFE_NS,
22
- signNfe,
23
23
  XNOME_HOMOLOGACAO,
24
24
  XPROD_HOMOLOGACAO_NFCE,
25
25
  } from './build/build.ts';
@@ -29,16 +29,17 @@ export { conferirEmitenteDoCertificado } from './build/rejeicoes.ts';
29
29
  export type { Familia } from './build/values.ts';
30
30
  export type { DecimalInput, RoundingMode } from './decimal.ts';
31
31
  export { Decimal, dec, sum } from './decimal.ts';
32
- export type { DecimalFormat } from './format.ts';
33
- export { formatDecimal, formatProblem } from './format.ts';
34
- export type { NfeIssueCode } from './issues.ts';
35
- export { NFE_ISSUE_CODES } from './issues.ts';
32
+ export type { FormatoDecimal } from './format.ts';
33
+ export { formatarDecimal, problemaDeFormato } from './format.ts';
34
+ export type { CodigoOcorrenciaNfe } from './issues.ts';
35
+ export { CODIGOS_OCORRENCIA_NFE } from './issues.ts';
36
36
  export type {
37
37
  ClassificacaoIbsCbs,
38
38
  Cobranca,
39
39
  Contingencia,
40
40
  Crt,
41
41
  CstPisCofinsOutras,
42
+ DadosNfe,
42
43
  Desoneracao,
43
44
  DesoneracaoSt,
44
45
  Destinatario,
@@ -89,7 +90,6 @@ export type {
89
90
  ModBC,
90
91
  ModBCST,
91
92
  ModFrete,
92
- NfeInput,
93
93
  Origem,
94
94
  Pagamento,
95
95
  PisCofins,
@@ -107,47 +107,49 @@ export type {
107
107
  Volume,
108
108
  } from './model.ts';
109
109
  export { MotivoDesoneracaoIcms, TipoPagamento } from './model.ts';
110
- export type { IbsCbsCalculator, IbsCbsItemRequest, IbsCbsNotaRequest, IbsCbsResponse } from './ports.ts';
110
+ export type { CalculadoraIbsCbs, PedidoIbsCbsItem, PedidoIbsCbsNota, RespostaIbsCbs } from './ports.ts';
111
111
  export { rotuloDoCaminho } from './rotulo.ts';
112
- export type { GrupoIbsCbs, IbsCbsCalculatorOptions } from './rtc.ts';
113
- export { carregarDatasetEmbarcado, ibsCbsCalculator, localDaOperacao } from './rtc.ts';
112
+ export type { CalculadoraIbsCbsOpcoes, GrupoIbsCbs } from './rtc.ts';
113
+ export { calculadoraIbsCbs, carregarDatasetEmbarcado, localDaOperacao } from './rtc.ts';
114
114
  export type {
115
115
  AutorDocumento,
116
- AutorizacaoOutcome,
117
116
  AutorizarOpcoes,
118
117
  Cadastro,
119
118
  CadastroPedido,
120
119
  CancelamentoPedido,
121
120
  CancelamentoSubstituicaoPedido,
122
121
  CartaCorrecaoPedido,
122
+ ClienteNfe,
123
+ ClienteNfeOpcoes,
123
124
  ConsultaNfe,
124
- ConsultaOutcome,
125
125
  ConsultaReciboOpcoes,
126
126
  Distribuicao,
127
127
  DistribuicaoConsulta,
128
128
  DistribuicaoOpcoes,
129
129
  DocumentoDistribuido,
130
- EventoOutcome,
130
+ EnvioOpcoes,
131
+ Espera,
131
132
  EventoRegistrado,
132
133
  Inutilizacao,
133
- InutilizacaoOutcome,
134
134
  InutilizacaoPedido,
135
135
  ManifestacaoPedido,
136
136
  ManifestacaoTipo,
137
- NfeClient,
138
- NfeClientOptions,
139
137
  PoliticaRecibo,
140
138
  ProtocoloNfe,
141
- Sleep,
139
+ ResultadoAutorizacao,
140
+ ResultadoConsulta,
141
+ ResultadoEvento,
142
+ ResultadoInutilizacao,
142
143
  StatusServico,
144
+ StatusServicoOpcoes,
143
145
  } from './services/client.ts';
144
- export { autorizadorContingencia, createNfeClient } from './services/client.ts';
145
- export { gunzipBase64 } from './services/gzip.ts';
146
+ export { autorizadorContingencia, criarClienteNfe } from './services/client.ts';
147
+ export { descomprimirGzipBase64 } from './services/gzip.ts';
146
148
  export type { DocumentoAssinado } from './services/proc.ts';
147
- export { documentoAssinado, nfeAssinadaDoProc, sliceElement } from './services/proc.ts';
149
+ export { documentoAssinado, nfeAssinadaDoProc, recortarElemento } from './services/proc.ts';
148
150
  export type { RecuperacaoEvento } from './services/recuperar.ts';
149
151
  export { recuperarEventoRegistrado } from './services/recuperar.ts';
150
152
  export type { ConteudoDoProtocolo, ResolucaoEnvio } from './services/resolver.ts';
151
153
  export { chaveDaDuplicidade, resolverEnvioSemResposta } from './services/resolver.ts';
152
154
  export type { Instante } from './time.ts';
153
- export { formatDh, offsetDaUf } from './time.ts';
155
+ export { deslocamentoDaUf, formatarDh } from './time.ts';
package/src/issues.ts CHANGED
@@ -1,12 +1,12 @@
1
1
  /**
2
- * Coletor de ocorrências de validação (`ValidationIssue` do core). O builder junta todas as ocorrências antes de
2
+ * Coletor de ocorrências de validação (`Ocorrencia` do core). O builder junta todas as ocorrências antes de
3
3
  * decidir, em vez de parar na primeira. Os códigos são API pública (snake_case, português, sem acento) e estão listados
4
- * em `NFE_ISSUE_CODES`.
4
+ * em `CODIGOS_OCORRENCIA_NFE`.
5
5
  */
6
6
 
7
- import type { OrigemOcorrencia, ValidationIssue } from '@sinete/core';
7
+ import type { Ocorrencia, OrigemOcorrencia } from '@sinete/core';
8
8
 
9
- export const NFE_ISSUE_CODES = [
9
+ export const CODIGOS_OCORRENCIA_NFE = [
10
10
  'campo_obrigatorio',
11
11
  'campo_invalido',
12
12
  'campo_fora_do_pl',
@@ -37,32 +37,32 @@ export const NFE_ISSUE_CODES = [
37
37
  'schema',
38
38
  ] as const;
39
39
 
40
- export type NfeIssueCode = (typeof NFE_ISSUE_CODES)[number];
40
+ export type CodigoOcorrenciaNfe = (typeof CODIGOS_OCORRENCIA_NFE)[number];
41
41
 
42
42
  export class Issues {
43
- readonly list: ValidationIssue[];
43
+ readonly list: Ocorrencia[];
44
44
 
45
45
  constructor() {
46
46
  this.list = [];
47
47
  }
48
48
 
49
49
  /** Ocorrência sobre a entrada, a não ser que `origem` diga outra coisa (ADR 0011). */
50
- add(path: string, code: NfeIssueCode | string, message: string, origem: OrigemOcorrencia = 'entrada'): void {
51
- this.list.push({ path, code, message, origem });
50
+ add(path: string, code: CodigoOcorrenciaNfe | string, message: string, origem: OrigemOcorrencia = 'entrada'): void {
51
+ this.list.push({ caminho: path, code, mensagem: message, origem });
52
52
  }
53
53
 
54
54
  /** Ocorrência sobre o que o sinete montou a partir da entrada (XML, schema, PL, chave gerada, calculadora). */
55
- montagem(path: string, code: NfeIssueCode | string, message: string): void {
55
+ montagem(path: string, code: CodigoOcorrenciaNfe | string, message: string): void {
56
56
  this.add(path, code, message, 'montagem');
57
57
  }
58
58
 
59
59
  /** As ocorrências com a `origem` preenchida: a que veio sem (a de um validador avulso) é da entrada. */
60
- get classificadas(): readonly ValidationIssue[] {
60
+ get classificadas(): readonly Ocorrencia[] {
61
61
  return this.list.map((i) => (i.origem === undefined ? { ...i, origem: 'entrada' } : i));
62
62
  }
63
63
 
64
64
  /** Junta ocorrências de outra fonte; a que vier sem `origem` recebe a informada. */
65
- addAll(issues: readonly ValidationIssue[], origem: OrigemOcorrencia = 'entrada'): void {
65
+ addAll(issues: readonly Ocorrencia[], origem: OrigemOcorrencia = 'entrada'): void {
66
66
  this.list.push(...issues.map((i) => (i.origem === undefined ? { ...i, origem } : i)));
67
67
  }
68
68
 
package/src/model.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Modelo de entrada da NF-e: o que quem emite descreve. O builder (`buildNfe`) transforma isto no objeto tipado do
2
+ * Modelo de entrada da NF-e: o que quem emite descreve. O builder (`montarNfe`) transforma isto no objeto tipado do
3
3
  * `@sinete/schemas` do pacote de liberação vigente, calcula os valores derivados e os totais em decimal exato e
4
4
  * confere as regras antes de qualquer serialização.
5
5
  *
@@ -727,7 +727,7 @@ export type PisCofinsSt = {
727
727
  // ---------------------------------------------------------------------------------------------------------------
728
728
 
729
729
  /**
730
- * Classificação do item para IBS/CBS (NT 2025.002): o que o `IbsCbsCalculator` recebe. `CST` e `cClassTrib` vêm do
730
+ * Classificação do item para IBS/CBS (NT 2025.002): o que o `CalculadoraIbsCbs` recebe. `CST` e `cClassTrib` vêm do
731
731
  * cadastro do item (tabela de classificação tributária); o cálculo, as alíquotas e as reduções são da calculadora.
732
732
  */
733
733
  export interface ClassificacaoIbsCbs {
@@ -955,7 +955,7 @@ export type FinNFe = '1' | '2' | '3' | '4' | '5' | '6';
955
955
  */
956
956
  export interface Contingencia {
957
957
  /**
958
- * 6 SVC-AN, 7 SVC-RS; 2 FS-IA; 4 EPEC; 5 FS-DA; 9 off-line, só NFC-e. Para SVC, `tpEmisSvc` do `NfeClient` escolhe pelo
958
+ * 6 SVC-AN, 7 SVC-RS; 2 FS-IA; 4 EPEC; 5 FS-DA; 9 off-line, só NFC-e. Para SVC, `tpEmisSvc` do `ClienteNfe` escolhe pelo
959
959
  * dado da UF.
960
960
  */
961
961
  readonly tpEmis: '2' | '4' | '5' | '6' | '7' | '9';
@@ -966,7 +966,7 @@ export interface Contingencia {
966
966
  }
967
967
 
968
968
  /** Entrada completa de uma NF-e. */
969
- export interface NfeInput {
969
+ export interface DadosNfe {
970
970
  /**
971
971
  * 55 (NF-e, padrão) ou 65 (NFC-e). Na NFC-e mudam os padrões (`indPres` 1, `indFinal` 1, `tpImp` 4), o destinatário
972
972
  * fica opcional, o pagamento passa a ser obrigatório e a montagem acrescenta o `infNFeSupl` (QR Code).
package/src/ports.ts CHANGED
@@ -1,16 +1,16 @@
1
1
  /**
2
2
  * Portas do `@sinete/nfe` para o que pode vir de fora. A montagem só conhece o contrato estreito declarado aqui; a
3
- * implementação padrão do IBS/CBS é o `ibsCbsCalculator` (`rtc.ts`, sobre o `@sinete/ibs-cbs`), e quem calcula em outro
4
- * lugar (ou testa com alíquotas fixas) injeta a sua em `BuildNfeOptions.ibsCbs`.
3
+ * implementação padrão do IBS/CBS é o `calculadoraIbsCbs` (`rtc.ts`, sobre o `@sinete/ibs-cbs`), e quem calcula em outro
4
+ * lugar (ou testa com alíquotas fixas) injeta a sua em `MontarNfeOpcoes.ibsCbs`.
5
5
  */
6
6
 
7
- import type { Ambiente, Uf, ValidationIssue } from '@sinete/core';
7
+ import type { Ambiente, Ocorrencia, Uf } from '@sinete/core';
8
8
  import type { TTribNFe } from '@sinete/schemas/nfe/PL_010f';
9
9
  import type { Decimal } from './decimal.ts';
10
10
  import type { Instante } from './time.ts';
11
11
 
12
12
  /** Um item classificado, com os valores que a calculadora pode precisar para a base do IBS/CBS. */
13
- export interface IbsCbsItemRequest {
13
+ export interface PedidoIbsCbsItem {
14
14
  /** Número do item na nota (1 a 990). */
15
15
  readonly nItem: number;
16
16
  /** CST do IBS/CBS (3 dígitos). */
@@ -54,8 +54,8 @@ export interface IbsCbsItemRequest {
54
54
  }
55
55
 
56
56
  /** Dados da nota que decidem a regra aplicável (local da operação, vigência, compra governamental). */
57
- export interface IbsCbsNotaRequest {
58
- /** Instante do fato gerador (relógio `fatoGerador` do `TimeContext`): decide a vigência das alíquotas. */
57
+ export interface PedidoIbsCbsNota {
58
+ /** Instante do fato gerador (relógio `fatoGerador` do `ContextoDeTempo`): decide a vigência das alíquotas. */
59
59
  readonly fatoGerador: Instante;
60
60
  /** Instante da emissão (o do `dhEmi`): decide quais regras de validação da NT já estão implantadas no ambiente. */
61
61
  readonly emissao: Instante;
@@ -75,22 +75,22 @@ export interface IbsCbsNotaRequest {
75
75
  }
76
76
 
77
77
  /** Resultado da calculadora: o grupo `IBSCBS` de cada item pedido, já na forma lexical do leiaute. */
78
- export interface IbsCbsResponse {
78
+ export interface RespostaIbsCbs {
79
79
  readonly itens: readonly { readonly nItem: number; readonly IBSCBS: TTribNFe }[];
80
80
  /**
81
- * Problemas de classificação ou de dado (`path` relativo ao item, como `itens[2].impostos.ibsCbs`). A ocorrência sem
81
+ * Problemas de classificação ou de dado (`caminho` relativo ao item, como `itens[2].impostos.ibsCbs`). A ocorrência sem
82
82
  * `origem` entra como `montagem` (ADR 0011); marque `entrada` a que aponta um valor da nota.
83
83
  */
84
- readonly issues?: readonly ValidationIssue[];
84
+ readonly ocorrencias?: readonly Ocorrencia[];
85
85
  }
86
86
 
87
87
  /**
88
- * Calcula o IBS e a CBS dos itens classificados. O padrão é o `ibsCbsCalculator`, sobre o `@sinete/ibs-cbs/calcular`; nos
88
+ * Calcula o IBS e a CBS dos itens classificados. O padrão é o `calculadoraIbsCbs`, sobre o `@sinete/ibs-cbs/calcular`; nos
89
89
  * testes, um dublê com alíquotas fixas. A calculadora não vê o XML nem o resto da nota além do que está no pedido.
90
90
  */
91
- export interface IbsCbsCalculator {
92
- calcular(request: {
93
- readonly nota: IbsCbsNotaRequest;
94
- readonly itens: readonly IbsCbsItemRequest[];
95
- }): IbsCbsResponse | Promise<IbsCbsResponse>;
91
+ export interface CalculadoraIbsCbs {
92
+ calcular(pedido: {
93
+ readonly nota: PedidoIbsCbsNota;
94
+ readonly itens: readonly PedidoIbsCbsItem[];
95
+ }): RespostaIbsCbs | Promise<RespostaIbsCbs>;
96
96
  }
package/src/rotulo.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Rótulo em português do caminho de uma ocorrência da NF-e (ADR 0011), para mostrar a quem preencheu a nota: `Item 2,
3
- * Descrição do produto` em vez de `itens[1].produto.xProd`. Aceita os caminhos da entrada (`NfeInput`) e os do
3
+ * Descrição do produto` em vez de `itens[1].produto.xProd`. Aceita os caminhos da entrada (`DadosNfe`) e os do
4
4
  * documento montado, tanto os das conferências do montador (`infNFe.det[1].prod.xProd`) quanto os do validador de XSD
5
5
  * (`/infNFe/det[2]/prod/xProd`).
6
6
  */
@@ -15,7 +15,7 @@ const item =
15
15
 
16
16
  /** Do mais específico ao mais geral. Os índices chegam somados de um. */
17
17
  const GRUPOS: readonly GrupoDeCaminho[] = [
18
- // Entrada (NfeInput)
18
+ // Entrada (DadosNfe)
19
19
  { padrao: /^emitente\b/, rotulo: 'Emitente' },
20
20
  { padrao: /^destinatario\b/, rotulo: 'Destinatário' },
21
21
  { padrao: /^retirada\b/, rotulo: 'Local de retirada' },
@@ -132,6 +132,6 @@ const rotular = criarRotuloDoCaminho({ grupos: GRUPOS, campos: CAMPOS, padrao: '
132
132
  * Rótulo em português do caminho de uma ocorrência da NF-e: `Grupo, Campo` quando os dois são conhecidos (`Emitente,
133
133
  * Inscrição estadual`), só um deles quando falta o outro, e `Dados da NF-e` quando nenhum é.
134
134
  */
135
- export function rotuloDoCaminho(path: string): string {
136
- return rotular(path);
135
+ export function rotuloDoCaminho(caminho: string): string {
136
+ return rotular(caminho);
137
137
  }