@useinvio/nfse-sdk 2.1.0 → 3.0.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.
package/JSON_MAPPING.md CHANGED
@@ -33,8 +33,9 @@ type DpsJsonRequest = {
33
33
 
34
34
  | Campo | Obrigatorio | Tipo | Descricao |
35
35
  | --- | --- | --- | --- |
36
- | `cnpj` | Sim | `string` | CNPJ do prestador. O SDK remove nao digitos e completa com zeros a esquerda ao montar o `Id` da DPS. |
37
- | `tpInsc` | Nao | `'1' \| '2' \| string` | Tipo de inscricao no `Id` da DPS. `1` = CPF, `2` = CNPJ. Quando ausente, usa `2`. |
36
+ | `cnpj` | Alternativa a `cpf` | `string` | CNPJ com exatamente 14 digitos, sem pontuacao. Informe exatamente um identificador. |
37
+ | `cpf` | Alternativa a `cnpj` | `string` | CPF com exatamente 11 digitos, sem pontuacao. |
38
+ | `tpInsc` | Nao | `'1' \| '2' \| string` | Legado ignorado. O SDK deriva o tipo do documento: `1` = CPF, `2` = CNPJ. |
38
39
  | `cLocEmi` | Sim | `string` | Codigo IBGE do municipio de emissao. |
39
40
  | `serie` | Sim | `string` | Serie padrao da DPS. Pode ser sobrescrita por `emissao.serie`. |
40
41
  | `opSimpNac` | Sim | `string` | Opcao pelo Simples Nacional, serializada em `prest/regTrib/opSimpNac`. |
@@ -58,7 +59,7 @@ type DpsJsonRequest = {
58
59
  | `serie` | Nao | `string` | Serie desta DPS. Quando informado, sobrescreve `prestador.serie` apenas nesta emissao. |
59
60
  | `dhEmi` | Nao | `string` | Data e hora da emissao em ISO com offset, por exemplo `2026-06-15T10:30:00-03:00`. Quando ausente, usa a data/hora atual. |
60
61
  | `dCompet` | Nao | `string` | Data de competencia no formato `YYYY-MM-DD`. Quando ausente, usa a data de `dhEmi`. |
61
- | `valores` | Condicional | `Valores` | Valores do servico, descontos e deducoes. Para calcular `vServ`, informe `valores.vServ` ou `valores.vServMoeda` + `valores.cotacao`. |
62
+ | `valores` | Condicional | `Valores` | Valores do servico. Descontos e deducoes ainda nao sao suportados. Para calcular `vServ`, informe `valores.vServ` ou `valores.vServMoeda` + `valores.cotacao`. |
62
63
  | `vServ` | Condicional | `string` | Atalho legado para o valor do servico. Usado quando `valores.vServ` nao foi informado. |
63
64
  | `vServMoeda` | Condicional | `string` | Atalho legado para valor em moeda estrangeira. Usado com `cotacao` quando `vServ` nao foi informado. |
64
65
  | `cotacao` | Condicional | `number` | Atalho legado para cotacao. Usado com `vServMoeda` quando `vServ` nao foi informado. |
@@ -88,7 +89,11 @@ type DpsJsonRequest = {
88
89
  Regra condicional: para gerar a DPS, o SDK precisa obter `vServ`. Informe
89
90
  `valores.vServ` ou informe o par `valores.vServMoeda` + `valores.cotacao`.
90
91
  Os atalhos `emissao.vServ`, `emissao.vServMoeda` e `emissao.cotacao` tambem sao
91
- aceitos, mas o formato com `valores` e preferencial.
92
+ aceitos. A resolucao e por campo: `valores` prevalece sobre o atalho correspondente, permitindo entradas mistas. A mesma resolucao e usada na validacao e no XML.
93
+
94
+ No modelo atual, nacional exige reais e proibe moeda/cotacao. Exportacao exige comercio exterior, valor estrangeiro e cotacao, mesmo quando ha `vServ` explicito. Informar somente o valor no bloco `comercioExterior` nao satisfaz essa exigencia.
95
+
96
+ `vServ` explicito prevalece sobre a conversao. O valor estrangeiro do bloco `comercioExterior` prevalece na tag `comExt/vServMoeda`. Divergencias geram `CURRENCY_BRL_MISMATCH` e `CURRENCY_FOREIGN_MISMATCH` em `warnings`, comparadas em centavos, sem bloquear a emissao. A multiplicacao preserva a precisao original; a serializacao arredonda metade para cima em duas casas, inclusive `comExt.vServMoeda`. Valores de servico que arredondam para zero ou excedem 15 digitos inteiros sao rejeitados.
92
97
 
93
98
  ## `emissao.servico`
94
99
 
@@ -107,12 +112,12 @@ aceitos, mas o formato com `valores` e preferencial.
107
112
  | `NIF` | Nao | `string` | Numero de identificacao fiscal estrangeiro. |
108
113
  | `cNaoNIF` | Nao | `string` | Motivo/codigo de nao informacao do NIF. |
109
114
  | `xNome` | Sim, se `tomador` existir | `string` | Nome ou razao social do tomador. |
110
- | `end` | Nao | `Endereco` | Endereco. Veja `Endereco` abaixo. |
115
+ | `end` | Sim, se `tomador` existir | `Endereco` | Endereco. Veja `Endereco` abaixo. |
111
116
  | `fone` | Nao | `string` | Telefone. |
112
117
  | `email` | Nao | `string` | Email. |
113
118
 
114
119
  Quando `tomador` for informado, use exatamente um identificador entre `CNPJ`,
115
- `CPF`, `NIF` e `cNaoNIF`.
120
+ `CPF`, `NIF` e `cNaoNIF`. Nacional exige CPF/CNPJ e `endNac`; exterior exige NIF ou `cNaoNIF` (`1`/`2`) e `endExt`. Omitir todo o tomador continua permitido localmente.
116
121
 
117
122
  ### `Endereco`
118
123
 
@@ -176,7 +181,7 @@ Regras adicionais:
176
181
  | `pAliqCofins` | Nao | `string` | Aliquota de COFINS. Serializada com duas casas decimais. |
177
182
  | `vPis` | Nao | `string` | Valor de PIS. Serializado com duas casas decimais. |
178
183
  | `vCofins` | Nao | `string` | Valor de COFINS. Serializado com duas casas decimais. |
179
- | `tpRetPisCofins` | Nao | `string` | Tipo de retencao de PIS/COFINS. |
184
+ | `tpRetPisCofins` | Nao | `string` | Tipo de retencao de PIS/COFINS, codigo de `0` a `9`. |
180
185
 
181
186
  ## `tribNac`
182
187
 
@@ -203,8 +208,8 @@ ainda nao implementa esse bloco.
203
208
 
204
209
  | Campo | Obrigatorio | Tipo | Descricao |
205
210
  | --- | --- | --- | --- |
206
- | `cObra` | Nao | `string` | Codigo da obra. |
207
- | `inscImobFisc` | Nao | `string` | Inscricao imobiliaria fiscal. |
211
+ | `cObra` | Sim, se `obra` existir | `string` | Codigo da obra, 1 a 30 caracteres. |
212
+ | `inscImobFisc` | Nao | `string` | Inscricao imobiliaria fiscal, 1 a 30 caracteres; serializada antes de `cObra`. |
208
213
  | `cCM` | Nao suportado | `string` | Campo legado bloqueado por validacao; nao existe como filho de `obra` no XSD v1.01. |
209
214
 
210
215
  ## `evento`
@@ -216,8 +221,7 @@ ainda nao implementa esse bloco.
216
221
 
217
222
  ## `totTrib`
218
223
 
219
- `totTrib` e um `xs:choice` no XSD: informe exatamente **um** dos quatro grupos
220
- abaixo. A SDK rejeita zero ou mais de um grupo preenchido.
224
+ `totTrib` e um `xs:choice` no XSD. O validador JSON atual restringe a modalidade por regime: nao optante (`1`) exige os tres `pTotTribFed/Est/Mun`; MEI (`2`) exige somente `indTotTrib="0"`; ME/EPP (`3`) exige somente `pTotTribSN`. Misturas e grupos incompletos sao rejeitados.
221
225
 
222
226
  | Campo | Obrigatorio | Tipo | Descricao |
223
227
  | --- | --- | --- | --- |
@@ -227,19 +231,28 @@ abaixo. A SDK rejeita zero ou mais de um grupo preenchido.
227
231
  | `pTotTribFed` | Condicional | `string` | Percentual aproximado de tributos federais. Serializado com duas casas decimais. |
228
232
  | `pTotTribEst` | Condicional | `string` | Percentual aproximado de tributos estaduais. Serializado com duas casas decimais. |
229
233
  | `pTotTribMun` | Condicional | `string` | Percentual aproximado de tributos municipais. Serializado com duas casas decimais. |
230
- | `pTotTribSN` | Condicional | `string` | Percentual aproximado de tributos no Simples Nacional. Nao informe quando `prestador.opSimpNac = "1"`. |
231
- | `indTotTrib` | Condicional | `string` | Indicador oficial para nao informar valor estimado. Use `0` quando nao houver estimativa aproximada. |
234
+ | `pTotTribSN` | Condicional | `string` | Percentual aproximado de tributos no Simples Nacional. Use somente quando `prestador.opSimpNac = "3"`. |
235
+ | `indTotTrib` | Condicional | `string` | Indicador oficial para nao informar valor estimado. Use `0` somente para MEI no modelo JSON atual. |
232
236
 
233
- Informe ao menos uma forma de totalizacao: grupo `vTotTrib*` (Fed+Est+Mun),
234
- grupo `pTotTrib*` (Fed+Est+Mun), `pTotTribSN` ou `indTotTrib=0`. Ao escolher o
235
- grupo `vTotTrib*` ou `pTotTrib*`, os tres campos (Fed/Est/Mun) sao obrigatorios.
237
+ Os campos `vTotTrib*` permanecem tipados por compatibilidade, mas nenhum dos regimes aceitos permite essa modalidade no JSON atual.
236
238
 
237
239
  ## Regras de formatacao
238
240
 
239
241
  - Valores monetarios sao serializados com duas casas decimais.
240
242
  - Aliquotas (`pAliq`, `pAliqPis`, `pAliqCofins`) sao serializadas com duas casas decimais.
241
243
  - Percentuais de carga tributaria em `totTrib` sao serializados com duas casas decimais.
242
- - Campos vazios, `undefined` ou `null` nao geram tags XML opcionais.
244
+ - Campos opcionais ausentes ou `undefined` sao omitidos; `null`, strings vazias e tipos incorretos sao rejeitados antecipadamente.
243
245
  - Campos obrigatorios ausentes geram erro antes da DPS ser retornada.
244
246
  - `comercioExterior` tem prioridade sobre `comExt` quando os dois forem informados.
245
247
  - O XML gerado nos testes e validado contra `schemas/nfse/v1.01/Schemas/1.01/DPS_v1.01.xsd`.
248
+
249
+
250
+ ## Relatorio e limites estruturais
251
+
252
+ `validateDpsJsonRequest` retorna `issues` com erros e `warnings` com avisos; somente erros tornam `valid=false`. `normalizedPayload` e uma copia independente com os valores e o alias de comercio exterior resolvidos, mantendo os campos legados. Estruturas invalidas retornam `INVALID_STRUCTURE`, sem acessos que lancem `TypeError`.
253
+
254
+ `dhEmi` exige data de calendario valida entre 2000 e 2099, segundos sem fracao e offset de horas inteiras de -11:00 a +12:00; `Z` nao e aceito pelo leiaute local. `dCompet` exige data valida no mesmo intervalo de anos. Nao se impoe relacao fiscal entre as datas.
255
+
256
+ Limites apos arredondamento: valores monetarios, 15 digitos inteiros; ISS, 1; aliquotas PIS/COFINS e `pTotTribSN`, 2; `pTotTribFed/Est/Mun`, 3. Esses limites sao estruturais, nao autorizacao fiscal de aliquotas. Retencoes federais podem ser zero, mas nao negativas.
257
+
258
+ Dominios de comercio exterior: `mdPrestacao` 0–4; `vincPrest` 0–6 ou 9; `tpMoeda` tres digitos; `mecAFComexP` 00–08; `mecAFComexT` 00–26; `movTempBens` 0–3; `mdic` 0–1. Nao se consultam catalogos externos. Os dois aliases de comercio exterior nao sao combinados.
package/README.md CHANGED
@@ -71,7 +71,6 @@ const nota = {
71
71
  ambiente: 'restrita' as const,
72
72
  prestador: {
73
73
  cnpj: '12345678000195',
74
- tpInsc: '2',
75
74
  cLocEmi: '4106902',
76
75
  serie: '1601',
77
76
  opSimpNac: '1',
@@ -89,8 +88,7 @@ const nota = {
89
88
  dCompet: '2026-06-01',
90
89
  valores: { vServ: '1500.00' },
91
90
  tributacaoMunicipal: {
92
- tribISSQN: '3',
93
- cPaisResult: 'BR',
91
+ tribISSQN: '1',
94
92
  tpRetISSQN: '1',
95
93
  },
96
94
  tributacaoFederal: {
@@ -163,7 +161,6 @@ const client = new NfseClient({
163
161
  defaults: {
164
162
  prestador: {
165
163
  cnpj: '12345678000195',
166
- tpInsc: '2',
167
164
  cLocEmi: '4106902',
168
165
  serie: '1601',
169
166
  opSimpNac: '1',
@@ -184,9 +181,13 @@ const invoice = await client.invoices.create({
184
181
  tomador: {
185
182
  CPF: '00000000000',
186
183
  xNome: 'Cliente Exemplo',
184
+ end: {
185
+ endNac: { cMun: '4106902', CEP: '80010000' },
186
+ xLgr: 'Rua Exemplo', nro: '100', xBairro: 'Centro',
187
+ },
187
188
  },
188
189
  tributacaoMunicipal: {
189
- tribISSQN: '3',
190
+ tribISSQN: '1',
190
191
  tpRetISSQN: '1',
191
192
  },
192
193
  tributacaoFederal: {
@@ -219,12 +220,33 @@ const dps = client.invoices.buildDpsJson({
219
220
  emissao: {
220
221
  nDPS: '2',
221
222
  valores: { vServ: '2500.00' },
223
+ tributacaoMunicipal: { tribISSQN: '1', tpRetISSQN: '1' },
224
+ totTrib: { pTotTribFed: '0', pTotTribEst: '0', pTotTribMun: '5' },
222
225
  },
223
226
  });
224
227
  ```
225
228
 
226
229
  ---
227
230
 
231
+
232
+ ### Validacao e compatibilidade
233
+
234
+ `validateDpsJsonRequest(entrada)` retorna `valid`, `issues` (erros), `warnings` (avisos) e uma copia `normalizedPayload`. Campos opcionais devem ser omitidos ou `undefined`; strings vazias, `null` e tipos incorretos sao rejeitados. Consulte [o mapeamento JSON](JSON_MAPPING.md) para os limites de datas e valores.
235
+
236
+ Divergencias entre `vServ` e a conversao cambial geram avisos, preservando o valor explicito. O mesmo vale para o valor estrangeiro do bloco de comercio exterior. Todos os valores monetarios sao arredondados para duas casas, inclusive `comExt.vServMoeda`; valores de servico que arredondam para zero sao rejeitados. Leia `warnings` antes da emissao quando quiser apresentar esses avisos ao usuario.
237
+
238
+ `prepararNota` verifica a vigencia do certificado antes de assinar; `transmitirNotaPreparada` verifica novamente antes do envio. `assertCertificateValidity(pfx, now?)` expoe essa verificacao. A checagem de titularidade continua explicita via `assertCertificateForProvider(pfx, documento, now?)`; o SDK nao resolve representacao fiscal.
239
+
240
+ O ambiente para JSON segue `options.ambiente` → `request.ambiente` → `restrita`, tanto no XML quanto no destino. XML externo usa `tpAmb` e rejeita uma opcao divergente. Notas preparadas tambem precisam ter o mesmo ambiente no XML assinado e no envio.
241
+
242
+ `client.invoices.get(chaveAcesso, { ambiente: 'producao' })` permite consultar uma emissao feita com sobrescrita de ambiente. Sem opcao, usa `defaults.ambiente` ou o ambiente do construtor. O cliente nao memoriza o ambiente da ultima emissao.
243
+
244
+ HTTP 2xx sem XML NFS-e bem formado e chave de 50 digitos consistente gera `EmitirNotaError` com codigo `INVALID_AUTHORIZATION_RESPONSE`, preservando corpo, status e DPS. Isso nao confirma rejeicao fiscal: concilie a emissao antes de reenviar. Nao ha retentativa automatica nem verificacao da assinatura da NFS-e recebida.
245
+
246
+ Veja [as correcoes e mudancas de comportamento](docs/CORRECOES_EMISSAO.md) e os [payloads nacional e exterior testados](examples/payloads.ts). Os exemplos declaram cenarios ilustrativos; a aplicacao escolhe o enquadramento aplicavel.
247
+
248
+ > **Migracao para 3.0.0:** esta versao tem breaking changes de validacao e resposta de autorizacao. Leia o guia curto em [CORRECOES_EMISSAO.md](docs/CORRECOES_EMISSAO.md) antes de atualizar.
249
+
228
250
  ## Certificado A1
229
251
 
230
252
  ### A partir de arquivo
@@ -262,11 +284,7 @@ console.log(resultado.chaveAcesso);
262
284
  console.log(resultado.nfseXml);
263
285
  ```
264
286
 
265
- > O XML precisa ter o atributo `Id` em `<infDPS>`. Se não tiver, passe `options.dpsId` manualmente.
266
-
267
- ```ts
268
- await emitirNfse(dpsXml, pfx, { dpsId: 'DPS0001', ambiente: 'restrita' });
269
- ```
287
+ > O XML precisa ter `Id` valido em `<infDPS>` e `tpAmb` consistente com o destino. `options.dpsId` apenas seleciona a referencia de assinatura; nao corrige um XML incompleto nem dispensa o XSD.
270
288
 
271
289
  ---
272
290
 
@@ -284,7 +302,6 @@ const nota: DpsJsonRequest = {
284
302
  ambiente: 'restrita',
285
303
  prestador: {
286
304
  cnpj: '12345678000195',
287
- tpInsc: '2',
288
305
  cLocEmi: '4106902',
289
306
  serie: '1601',
290
307
  opSimpNac: '1',
@@ -302,8 +319,7 @@ const nota: DpsJsonRequest = {
302
319
  dCompet: '2026-06-01',
303
320
  valores: { vServ: '1500.00' },
304
321
  tributacaoMunicipal: {
305
- tribISSQN: '3',
306
- cPaisResult: 'BR',
322
+ tribISSQN: '1',
307
323
  tpRetISSQN: '1',
308
324
  },
309
325
  tributacaoFederal: {
@@ -465,6 +481,8 @@ Leia o guia completo em [docs/METRICS.md](./docs/METRICS.md).
465
481
 
466
482
  | Função | Descrição |
467
483
  |---|---|
484
+ | `assertCertificateValidity(pfx, now?)` | Verifica vigencia do certificado; aplicada na preparacao e no envio. |
485
+ | `assertCertificateForProvider(pfx, documento, now?)` | Verifica explicitamente vigencia e correspondencia do titular. |
468
486
  | `loadPfx(path, password)` | Carrega certificado A1 a partir de arquivo. |
469
487
  | `loadPfxFromBuffer(buffer, password)` | Carrega certificado A1 a partir de buffer. |
470
488
 
@@ -474,7 +492,7 @@ Leia o guia completo em [docs/METRICS.md](./docs/METRICS.md).
474
492
  |---|---|
475
493
  | `signDps(xml, dpsId, pfx)` | Assina XML de DPS com XMLDSIG. |
476
494
  | `signEnveloped(xml, id, ref, pfx)` | Assina XML genérico (eventos). |
477
- | `verifyDps(xml)` | Verifica assinatura de uma DPS. |
495
+ | `verifyDps(xml, certPem)` | Verifica assinatura de uma DPS. |
478
496
  | `gzipBase64(xml)` | Compacta XML em GZip e codifica em Base64. |
479
497
  | `gunzipBase64(b64)` | Descompacta resposta GZip/Base64. |
480
498
  | `extrairErros(body)` | Normaliza erros oficiais de uma resposta da SEFIN. |
@@ -486,6 +504,7 @@ Leia o guia completo em [docs/METRICS.md](./docs/METRICS.md).
486
504
  import type {
487
505
  Ambiente,
488
506
  CreateInvoiceInput,
507
+ GetInvoiceOptions,
489
508
  DpsJsonInput,
490
509
  DpsJsonRequest,
491
510
  EmitirNotaOptions,
@@ -3,5 +3,7 @@ export declare class CertificateValidationError extends Error {
3
3
  readonly code: 'CERTIFICATE_NOT_YET_VALID' | 'CERTIFICATE_EXPIRED' | 'CERTIFICATE_HOLDER_MISMATCH';
4
4
  constructor(code: 'CERTIFICATE_NOT_YET_VALID' | 'CERTIFICATE_EXPIRED' | 'CERTIFICATE_HOLDER_MISMATCH', message: string);
5
5
  }
6
- /** Final certificate validity and holder check performed immediately before transmission. */
6
+ /** Validity is checked at signing time and again immediately before transmission. */
7
+ export declare function assertCertificateValidity(pfx: PfxMaterial, now?: Date): void;
8
+ /** Explicit holder check; does not resolve fiscal representation/authorization. */
7
9
  export declare function assertCertificateForProvider(pfx: PfxMaterial, providerTaxId: string, now?: Date): void;
@@ -7,8 +7,8 @@ export class CertificateValidationError extends Error {
7
7
  this.name = 'CertificateValidationError';
8
8
  }
9
9
  }
10
- /** Final certificate validity and holder check performed immediately before transmission. */
11
- export function assertCertificateForProvider(pfx, providerTaxId, now = new Date()) {
10
+ /** Validity is checked at signing time and again immediately before transmission. */
11
+ export function assertCertificateValidity(pfx, now = new Date()) {
12
12
  const certificate = forge.pki.certificateFromPem(pfx.certPem);
13
13
  if (now < certificate.validity.notBefore) {
14
14
  throw new CertificateValidationError('CERTIFICATE_NOT_YET_VALID', 'O certificado digital ainda nao esta vigente.');
@@ -16,12 +16,17 @@ export function assertCertificateForProvider(pfx, providerTaxId, now = new Date(
16
16
  if (now >= certificate.validity.notAfter) {
17
17
  throw new CertificateValidationError('CERTIFICATE_EXPIRED', 'O certificado digital esta expirado.');
18
18
  }
19
+ }
20
+ /** Explicit holder check; does not resolve fiscal representation/authorization. */
21
+ export function assertCertificateForProvider(pfx, providerTaxId, now = new Date()) {
22
+ assertCertificateValidity(pfx, now);
23
+ const certificate = forge.pki.certificateFromPem(pfx.certPem);
19
24
  const expected = providerTaxId.replace(/\D/g, '');
20
25
  const subjectText = certificate.subject.attributes.map((attribute) => String(attribute.value)).join(' ');
21
26
  const derText = forge.asn1.toDer(forge.pki.certificateToAsn1(certificate)).getBytes();
22
- const taxIds = `${subjectText} ${derText}`.match(/\d{14}/g) ?? [];
27
+ const taxIds = `${subjectText} ${derText}`.match(/\d{11}(?:\d{3})?/g) ?? [];
23
28
  if (!taxIds.includes(expected)) {
24
- throw new CertificateValidationError('CERTIFICATE_HOLDER_MISMATCH', 'O titular do certificado digital nao corresponde ao CNPJ do emitente.');
29
+ throw new CertificateValidationError('CERTIFICATE_HOLDER_MISMATCH', 'O titular do certificado digital nao corresponde ao CPF/CNPJ do emitente.');
25
30
  }
26
31
  }
27
32
  //# sourceMappingURL=certificateValidation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"certificateValidation.js","sourceRoot":"","sources":["../certificateValidation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAG/B,MAAM,OAAO,0BAA2B,SAAQ,KAAK;IAEjC;IADlB,YACkB,IAAyF,EACzG,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,SAAI,GAAJ,IAAI,CAAqF;QAIzG,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;IAC3C,CAAC;CACF;AAED,6FAA6F;AAC7F,MAAM,UAAU,4BAA4B,CAAC,GAAgB,EAAE,aAAqB,EAAE,GAAG,GAAG,IAAI,IAAI,EAAE;IACpG,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9D,IAAI,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QACzC,MAAM,IAAI,0BAA0B,CAAC,2BAA2B,EAAE,+CAA+C,CAAC,CAAC;IACrH,CAAC;IACD,IAAI,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACzC,MAAM,IAAI,0BAA0B,CAAC,qBAAqB,EAAE,sCAAsC,CAAC,CAAC;IACtG,CAAC;IAED,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzG,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACtF,MAAM,MAAM,GAAa,GAAG,WAAW,IAAI,OAAO,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IAC5E,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,0BAA0B,CAClC,6BAA6B,EAC7B,uEAAuE,CACxE,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"certificateValidation.js","sourceRoot":"","sources":["../certificateValidation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAG/B,MAAM,OAAO,0BAA2B,SAAQ,KAAK;IAEjC;IADlB,YACkB,IAAyF,EACzG,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,SAAI,GAAJ,IAAI,CAAqF;QAIzG,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;IAC3C,CAAC;CACF;AAED,qFAAqF;AACrF,MAAM,UAAU,yBAAyB,CAAC,GAAgB,EAAE,GAAG,GAAG,IAAI,IAAI,EAAE;IAC1E,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9D,IAAI,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QACzC,MAAM,IAAI,0BAA0B,CAAC,2BAA2B,EAAE,+CAA+C,CAAC,CAAC;IACrH,CAAC;IACD,IAAI,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACzC,MAAM,IAAI,0BAA0B,CAAC,qBAAqB,EAAE,sCAAsC,CAAC,CAAC;IACtG,CAAC;AACH,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,4BAA4B,CAAC,GAAgB,EAAE,aAAqB,EAAE,GAAG,GAAG,IAAI,IAAI,EAAE;IACpG,yBAAyB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACpC,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzG,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACtF,MAAM,MAAM,GAAa,GAAG,WAAW,IAAI,OAAO,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;IACtF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,0BAA0B,CAClC,6BAA6B,EAC7B,2EAA2E,CAC5E,CAAC;IACJ,CAAC;AACH,CAAC"}
package/dist/client.d.ts CHANGED
@@ -17,6 +17,9 @@ export interface NfseClientDpsDefaults {
17
17
  emissao?: Partial<DpsJsonInput>;
18
18
  }
19
19
  export type CreateInvoiceInput = NfseClientDpsDefaults;
20
+ export interface GetInvoiceOptions {
21
+ ambiente?: Ambiente;
22
+ }
20
23
  export interface NfseClientOptions {
21
24
  environment?: NfseEnvironment;
22
25
  certificate: NfseCertificateInput | PfxMaterial;
@@ -25,7 +28,7 @@ export interface NfseClientOptions {
25
28
  export interface InvoiceResource {
26
29
  create(input: CreateInvoiceInput): Promise<ResultadoEmissaoNota>;
27
30
  buildDpsJson(input: CreateInvoiceInput): DpsJsonRequest;
28
- get(chaveAcesso: string): Promise<SefinResposta>;
31
+ get(chaveAcesso: string, options?: GetInvoiceOptions): Promise<SefinResposta>;
29
32
  }
30
33
  export declare class NfseClient {
31
34
  readonly invoices: InvoiceResource;
package/dist/client.js CHANGED
@@ -43,7 +43,7 @@ export class NfseClient {
43
43
  this.invoices = {
44
44
  create: (input) => this.createInvoice(input),
45
45
  buildDpsJson: (input) => this.buildInvoiceDpsJson(input),
46
- get: (chaveAcesso) => this.getInvoice(chaveAcesso),
46
+ get: (chaveAcesso, options) => this.getInvoice(chaveAcesso, options),
47
47
  };
48
48
  }
49
49
  buildInvoiceDpsJson(input) {
@@ -70,8 +70,8 @@ export class NfseClient {
70
70
  const dpsJson = this.buildInvoiceDpsJson(input);
71
71
  return emitirNfse(dpsJson, this.pfx, { ambiente: dpsJson.ambiente });
72
72
  }
73
- async getInvoice(chaveAcesso) {
74
- return consultarNfse(chaveAcesso, this.pfx, this.ambiente);
73
+ async getInvoice(chaveAcesso, options = {}) {
74
+ return consultarNfse(chaveAcesso, this.pfx, options.ambiente ?? this.defaults.ambiente ?? this.ambiente);
75
75
  }
76
76
  }
77
77
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C,OAAO,EAAE,UAAU,EAA6B,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAoB,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,aAAa,EAAsB,MAAM,kBAAkB,CAAC;AAgCrE,SAAS,kBAAkB,CAAC,WAAwC;IAClE,IAAI,CAAC,WAAW,IAAI,WAAW,KAAK,SAAS;QAAE,OAAO,gBAAgB,CAAC;IACvE,IAAI,WAAW,KAAK,YAAY;QAAE,OAAO,UAAU,CAAC;IACpD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,aAAa,CAAC,KAAyC;IAC9D,OAAO,eAAe,IAAI,KAAK,IAAI,SAAS,IAAI,KAAK,IAAI,WAAW,IAAI,KAAK,CAAC;AAChF,CAAC;AAED,SAAS,wBAAwB,CAAC,WAAiC;IACjE,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC;QAAE,OAAO,WAAW,CAAC,OAAO,CAAC;IAErE,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC3C,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,IAAI,QAAQ,CAAC;IAClD,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACzF,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,YAAY,CAAmB,KAAoB,EAAE,KAAa;IACzE,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,+CAA+C,KAAK,EAAE,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,OAAO,UAAU;IACL,QAAQ,CAAkB;IAEzB,QAAQ,CAAW;IACnB,GAAG,CAAc;IACjB,QAAQ,CAAwB;IAEjD,YAAY,OAA0B;QACpC,IAAI,CAAC,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACxD,IAAI,CAAC,GAAG,GAAG,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC;YAC3C,CAAC,CAAC,OAAO,CAAC,WAAW;YACrB,CAAC,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACnG,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG;YACd,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;YAC5C,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;YACxD,GAAG,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;SACnD,CAAC;IACJ,CAAC;IAEO,mBAAmB,CAAC,KAAyB;QACnD,MAAM,SAAS,GAAG;YAChB,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS;YAC1B,GAAG,KAAK,CAAC,SAAS;SACnB,CAAC;QACF,MAAM,OAAO,GAAG;YACd,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO;YACxB,GAAG,KAAK,CAAC,OAAO;SACjB,CAAC;QACF,MAAM,OAAO,GAAG;YACd,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO;YACxB,GAAG,KAAK,CAAC,OAAO;SACjB,CAAC;QAEF,OAAO;YACL,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;YACnE,SAAS,EAAE,YAAY,CAAC,SAAS,EAAE,WAAW,CAAqB;YACnE,OAAO,EAAE,YAAY,CAAC,OAAO,EAAE,SAAS,CAAmB;YAC3D,OAAO,EAAE,YAAY,CAAC,OAAO,EAAE,SAAS,CAAiB;SAC1D,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,KAAyB;QACnD,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAChD,OAAO,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACvE,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,WAAmB;QAC1C,OAAO,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7D,CAAC;CACF"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /** Decimal arithmetic shared by validation and serialization; no binary float math. */
2
+ export declare function decimalParts(value: string | number): {
3
+ integer: bigint;
4
+ scale: number;
5
+ };
6
+ export declare function fixedDecimal(value: string | number): string;
7
+ export declare function mulDecimal(a: string, b: number): string;
@@ -0,0 +1,24 @@
1
+ /** Decimal arithmetic shared by validation and serialization; no binary float math. */
2
+ export function decimalParts(value) {
3
+ const text = String(value);
4
+ if (!/^\d+(?:\.\d+)?$/.test(text))
5
+ throw new Error(`Decimal invalido: ${text}`);
6
+ const [whole, fraction = ''] = text.split('.');
7
+ return { integer: BigInt(`${whole}${fraction}`), scale: fraction.length };
8
+ }
9
+ function fixedFromInteger(integer, scale, decimals = 2) {
10
+ const divisor = 10n ** BigInt(Math.max(0, scale - decimals));
11
+ const scaled = scale > decimals ? (integer + divisor / 2n) / divisor : integer * 10n ** BigInt(decimals - scale);
12
+ const text = scaled.toString().padStart(decimals + 1, '0');
13
+ return `${text.slice(0, -decimals)}.${text.slice(-decimals)}`;
14
+ }
15
+ export function fixedDecimal(value) {
16
+ const { integer, scale } = decimalParts(value);
17
+ return fixedFromInteger(integer, scale);
18
+ }
19
+ export function mulDecimal(a, b) {
20
+ const left = decimalParts(a);
21
+ const right = decimalParts(b);
22
+ return fixedFromInteger(left.integer * right.integer, left.scale + right.scale);
23
+ }
24
+ //# sourceMappingURL=decimal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decimal.js","sourceRoot":"","sources":["../decimal.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,MAAM,UAAU,YAAY,CAAC,KAAsB;IACjD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC;IAChF,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,KAAK,GAAG,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;AAC5E,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAe,EAAE,KAAa,EAAE,QAAQ,GAAG,CAAC;IACpE,MAAM,OAAO,GAAG,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,OAAO,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,GAAG,GAAG,IAAI,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;IACjH,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3D,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAsB;IACjD,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IAC/C,OAAO,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,CAAS,EAAE,CAAS;IAC7C,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAC9B,OAAO,gBAAgB,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;AAClF,CAAC"}
package/dist/dpsJson.d.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  import type { Ambiente } from './config.js';
2
2
  export interface PrestadorProfile {
3
- cnpj: string;
4
- /** tpInsc: 1 = CPF, 2 = CNPJ */
3
+ cnpj?: string;
4
+ cpf?: string;
5
+ /** tpInsc é derivado do CPF/CNPJ informado; mantido por compatibilidade. */
5
6
  tpInsc?: '1' | '2' | string;
6
7
  cLocEmi: string;
7
8
  serie: string;
package/dist/dpsJson.js CHANGED
@@ -1,18 +1,10 @@
1
1
  import { DEFAULT_AMBIENTE, TP_AMB } from './config.js';
2
- import { assertValidDpsJsonRequest } from './fiscalValidation.js';
2
+ import { DpsFiscalValidationError, validateDpsJsonRequest } from './fiscalValidation.js';
3
+ import { fixedDecimal, mulDecimal } from './decimal.js';
4
+ import { resolveValores } from './dpsNormalization.js';
3
5
  const NS = 'http://www.sped.fazenda.gov.br/nfse';
4
6
  const VERSAO = '1.01';
5
7
  const VER_APLIC = 'UseInvio';
6
- function normalizeRequest(input) {
7
- const parsed = typeof input === 'string' ? JSON.parse(input) : input;
8
- if (!parsed?.prestador)
9
- throw new Error('JSON da DPS deve informar prestador');
10
- if (!parsed?.servico)
11
- throw new Error('JSON da DPS deve informar servico');
12
- if (!parsed?.emissao)
13
- throw new Error('JSON da DPS deve informar emissao');
14
- return parsed;
15
- }
16
8
  function escapeXml(value) {
17
9
  return String(value)
18
10
  .replace(/&/g, '&amp;')
@@ -47,51 +39,38 @@ function onlyDigits(value) {
47
39
  function pad(value, length) {
48
40
  return onlyDigits(value).padStart(length, '0');
49
41
  }
50
- function roundMoney(value) {
51
- return Number(value).toFixed(2);
52
- }
53
- function roundRate(value) {
54
- return Number(value).toFixed(2);
55
- }
56
- function roundTaxBurdenRate(value) {
57
- return Number(value).toFixed(2);
58
- }
59
- function mulDecimal(a, b) {
60
- const scale = 1_000_000;
61
- const result = (Math.round(Number(a) * scale) * Math.round(b * scale)) / (scale * scale);
62
- return result.toFixed(2);
63
- }
64
- function nowOffset(date = new Date()) {
65
- const p = (n) => String(n).padStart(2, '0');
66
- const tz = -date.getTimezoneOffset();
67
- const sign = tz >= 0 ? '+' : '-';
68
- const abs = Math.abs(tz);
69
- const offset = `${sign}${p(Math.floor(abs / 60))}:${p(abs % 60)}`;
70
- return (`${date.getFullYear()}-${p(date.getMonth() + 1)}-${p(date.getDate())}` +
71
- `T${p(date.getHours())}:${p(date.getMinutes())}:${p(date.getSeconds())}${offset}`);
42
+ const roundMoney = fixedDecimal;
43
+ const roundRate = fixedDecimal;
44
+ const roundTaxBurdenRate = fixedDecimal;
45
+ function nowSaoPauloOffset(date = new Date()) {
46
+ const parts = new Intl.DateTimeFormat('en-CA', {
47
+ timeZone: 'America/Sao_Paulo', year: 'numeric', month: '2-digit', day: '2-digit',
48
+ hour: '2-digit', minute: '2-digit', second: '2-digit', hourCycle: 'h23',
49
+ }).formatToParts(date).reduce((result, part) => ({ ...result, [part.type]: part.value }), {});
50
+ return `${parts.year}-${parts.month}-${parts.day}T${parts.hour}:${parts.minute}:${parts.second}-03:00`;
72
51
  }
73
52
  function resolveVServ(input) {
74
- const values = input.valores;
75
- const vServ = values?.vServ ?? input.vServ;
53
+ const { vServ, vServMoeda, cotacao } = resolveValores(input);
76
54
  if (vServ)
77
55
  return roundMoney(vServ);
78
- const vServMoeda = values?.vServMoeda ?? input.vServMoeda;
79
- const cotacao = values?.cotacao ?? input.cotacao;
80
56
  if (!vServMoeda || !cotacao) {
81
57
  throw new Error('Informe valores.vServ ou (valores.vServMoeda + valores.cotacao) no JSON da DPS.');
82
58
  }
83
59
  return mulDecimal(vServMoeda, cotacao);
84
60
  }
85
61
  function resolveVServMoeda(input) {
86
- return input.valores?.vServMoeda ?? input.vServMoeda ?? '0.00';
62
+ return resolveValores(input).vServMoeda ?? '0.00';
87
63
  }
88
64
  export function buildDpsId(prestador, nDPS, serie = prestador.serie) {
89
- const cnpjDigits = prestador.cnpj.replace(/\D/g, '');
90
- const tpInsc = cnpjDigits.length === 14 ? '2' : (prestador.tpInsc ?? '1');
65
+ const taxId = prestador.cnpj ?? prestador.cpf;
66
+ if (!taxId)
67
+ throw new Error('Prestador deve informar CNPJ ou CPF.');
68
+ const taxIdDigits = taxId.replace(/\D/g, '');
69
+ const tpInsc = taxIdDigits.length === 14 ? '2' : '1';
91
70
  const id = 'DPS' +
92
71
  pad(prestador.cLocEmi, 7) +
93
72
  tpInsc +
94
- pad(cnpjDigits, 14) +
73
+ pad(taxIdDigits, 14) +
95
74
  pad(serie, 5) +
96
75
  pad(nDPS, 15);
97
76
  if (id.length !== 45) {
@@ -203,7 +182,7 @@ function buildComExt(input, comExt) {
203
182
  textEl('mdPrestacao', comExt.mdPrestacao),
204
183
  textEl('vincPrest', comExt.vincPrest),
205
184
  textEl('tpMoeda', comExt.tpMoeda),
206
- requiredTextEl('vServMoeda', comExt.vServMoeda ?? resolveVServMoeda(input)),
185
+ requiredTextEl('vServMoeda', roundMoney(comExt.vServMoeda ?? resolveVServMoeda(input))),
207
186
  textEl('mecAFComexP', comExt.mecAFComexP),
208
187
  textEl('mecAFComexT', comExt.mecAFComexT),
209
188
  textEl('movTempBens', comExt.movTempBens),
@@ -211,19 +190,22 @@ function buildComExt(input, comExt) {
211
190
  ].join(''));
212
191
  }
213
192
  export function buildDpsFromJson(input) {
214
- const request = normalizeRequest(input);
215
- assertValidDpsJsonRequest(request);
193
+ const parsed = typeof input === 'string' ? JSON.parse(input) : input;
194
+ const report = validateDpsJsonRequest(parsed);
195
+ if (!report.valid)
196
+ throw new DpsFiscalValidationError(report);
197
+ const request = report.normalizedPayload;
216
198
  const ambiente = request.ambiente ?? DEFAULT_AMBIENTE;
217
199
  const { prestador, servico } = request;
218
200
  const emissao = request.emissao;
219
201
  const serie = emissao.serie ?? prestador.serie;
220
202
  const id = buildDpsId(prestador, emissao.nDPS, serie);
221
- const dhEmi = emissao.dhEmi ?? nowOffset();
203
+ const dhEmi = emissao.dhEmi ?? nowSaoPauloOffset();
222
204
  const dCompet = emissao.dCompet ?? dhEmi.slice(0, 10);
223
205
  const serviceOverride = emissao.servico;
224
206
  const comExt = emissao.comercioExterior ?? emissao.comExt;
225
207
  const vServ = resolveVServ(emissao);
226
- const prest = el('prest', requiredTextEl('CNPJ', prestador.cnpj) +
208
+ const prest = el('prest', (prestador.cnpj ? requiredTextEl('CNPJ', prestador.cnpj) : requiredTextEl('CPF', prestador.cpf)) +
227
209
  el('regTrib', requiredTextEl('opSimpNac', prestador.opSimpNac) +
228
210
  textEl('regApTribSN', prestador.regApTribSN) +
229
211
  requiredTextEl('regEspTrib', prestador.regEspTrib)));
@@ -236,7 +218,7 @@ export function buildDpsFromJson(input) {
236
218
  el('locPrest', requiredTextEl('cLocPrestacao', serviceOverride?.cLocPrestacao ?? servico.cLocPrestacao)),
237
219
  cServ,
238
220
  comExt ? buildComExt(emissao, comExt) : '',
239
- emissao.obra ? el('obra', textEl('cObra', emissao.obra.cObra) + textEl('inscImobFisc', emissao.obra.inscImobFisc) + textEl('cCM', emissao.obra.cCM)) : '',
221
+ emissao.obra ? el('obra', textEl('inscImobFisc', emissao.obra.inscImobFisc) + requiredTextEl('cObra', emissao.obra.cObra)) : '',
240
222
  emissao.evento ? el('atvEvento', textEl('xDesc', emissao.evento.xDesc) + textEl('dtEvento', emissao.evento.dtEvento)) : '',
241
223
  ].join(''));
242
224
  const vServPrest = el('vServPrest', requiredTextEl('vServ', vServ) +
@@ -1 +1 @@
1
- {"version":3,"file":"dpsJson.js","sourceRoot":"","sources":["../dpsJson.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dpsJson.js","sourceRoot":"","sources":["../dpsJson.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { DpsJsonInput, DpsJsonRequest, Valores } from './dpsJson.js';
2
+ export declare function resolveValores(input: DpsJsonInput): Valores;
3
+ /** Called only after the structural check. Retains legacy fields for compatibility. */
4
+ export declare function normalizeDpsRequest<T extends DpsJsonRequest>(request: T): T;
5
+ /** Copy JSON-like data without throwing on extra non-JSON properties. */
6
+ export declare function clonePayload<T>(value: T, seen?: WeakMap<object, unknown>): T;
7
+ export declare function structuralIssues(value: unknown): Array<{
8
+ path: string;
9
+ message: string;
10
+ }>;