@useinvio/nfse-sdk 3.0.0 → 3.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.
- package/CHANGELOG.md +176 -0
- package/README.en.md +146 -0
- package/README.md +77 -518
- package/dist/agent.d.ts +131 -0
- package/dist/agent.js +551 -0
- package/dist/agent.js.map +1 -0
- package/dist/certificate.d.ts +96 -0
- package/dist/certificate.js +218 -0
- package/dist/certificate.js.map +1 -0
- package/dist/certificateValidation.d.ts +11 -6
- package/dist/certificateValidation.js +23 -12
- package/dist/certificateValidation.js.map +1 -1
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +520 -0
- package/dist/cli.js.map +1 -0
- package/dist/cliBin.d.ts +2 -0
- package/dist/cliBin.js +6 -0
- package/dist/cliBin.js.map +1 -0
- package/dist/cliExample.d.ts +6 -0
- package/dist/cliExample.js +29 -0
- package/dist/cliExample.js.map +1 -0
- package/dist/client.d.ts +51 -4
- package/dist/client.js +41 -10
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +3 -0
- package/dist/config.js +8 -0
- package/dist/config.js.map +1 -1
- package/dist/consultas.d.ts +34 -0
- package/dist/consultas.js +61 -0
- package/dist/consultas.js.map +1 -0
- package/dist/dpsJson.js +1 -41
- package/dist/dpsJson.js.map +1 -1
- package/dist/dpsJsonSchema.d.ts +17 -0
- package/dist/dpsJsonSchema.js +184 -0
- package/dist/dpsJsonSchema.js.map +1 -0
- package/dist/emissaoNota.d.ts +11 -6
- package/dist/emissaoNota.js +10 -6
- package/dist/emissaoNota.js.map +1 -1
- package/dist/eventoJson.d.ts +76 -0
- package/dist/eventoJson.js +128 -0
- package/dist/eventoJson.js.map +1 -0
- package/dist/eventosNfse.d.ts +38 -0
- package/dist/eventosNfse.js +73 -0
- package/dist/eventosNfse.js.map +1 -0
- package/dist/fiscalDomains.d.ts +22 -0
- package/dist/fiscalDomains.js +99 -0
- package/dist/fiscalDomains.js.map +1 -0
- package/dist/fiscalValidation.js +21 -53
- package/dist/fiscalValidation.js.map +1 -1
- package/dist/gzipB64.d.ts +5 -0
- package/dist/gzipB64.js +12 -0
- package/dist/gzipB64.js.map +1 -1
- package/dist/index.d.ts +22 -7
- package/dist/index.js +11 -4
- package/dist/index.js.map +1 -1
- package/dist/jsonSchemaCheck.d.ts +12 -0
- package/dist/jsonSchemaCheck.js +70 -0
- package/dist/jsonSchemaCheck.js.map +1 -0
- package/dist/loadPfx.d.ts +2 -0
- package/dist/loadPfx.js +2 -1
- package/dist/loadPfx.js.map +1 -1
- package/dist/mcpCli.d.ts +2 -0
- package/dist/mcpCli.js +7 -0
- package/dist/mcpCli.js.map +1 -0
- package/dist/mcpServer.d.ts +49 -0
- package/dist/mcpServer.js +159 -0
- package/dist/mcpServer.js.map +1 -0
- package/dist/nfseXml.d.ts +48 -0
- package/dist/nfseXml.js +86 -0
- package/dist/nfseXml.js.map +1 -0
- package/dist/rejeicoes.d.ts +50 -0
- package/dist/rejeicoes.js +62 -0
- package/dist/rejeicoes.js.map +1 -0
- package/dist/rejeicoesCatalog.d.ts +10 -0
- package/dist/rejeicoesCatalog.js +4449 -0
- package/dist/rejeicoesCatalog.js.map +1 -0
- package/dist/sefinClient.d.ts +107 -7
- package/dist/sefinClient.js +232 -22
- package/dist/sefinClient.js.map +1 -1
- package/dist/signXml.d.ts +3 -3
- package/dist/signXml.js +17 -7
- package/dist/signXml.js.map +1 -1
- package/dist/testing.d.ts +80 -0
- package/dist/testing.js +285 -0
- package/dist/testing.js.map +1 -0
- package/dist/xmlBuild.d.ts +11 -0
- package/dist/xmlBuild.js +44 -0
- package/dist/xmlBuild.js.map +1 -0
- package/dist/xmlInspection.d.ts +1 -1
- package/dist/xmlInspection.js +10 -9
- package/dist/xmlInspection.js.map +1 -1
- package/dist/xsdValidation.d.ts +24 -5
- package/dist/xsdValidation.js +97 -67
- package/dist/xsdValidation.js.map +1 -1
- package/docs/README.md +47 -0
- package/docs/REGRAS_NEGOCIO_EMISSAO.md +8 -8
- package/docs/conceitos/como-funciona.md +87 -0
- package/docs/guias/adn.md +51 -0
- package/docs/guias/agentes-ia.md +111 -0
- package/docs/guias/cancelar.md +70 -0
- package/docs/guias/certificado.md +88 -0
- package/docs/guias/cli.md +68 -0
- package/docs/guias/consultar.md +54 -0
- package/docs/guias/emitir.md +172 -0
- package/docs/guias/recuperar-emissao.md +33 -0
- package/docs/guias/rejeicoes.md +70 -0
- package/docs/guias/testes.md +79 -0
- package/docs/guias/timeouts.md +33 -0
- package/docs/referencia/ambientes.md +35 -0
- package/docs/referencia/api.md +137 -0
- package/docs/referencia/erros.md +55 -0
- package/docs/tutoriais/primeira-nfse.md +130 -0
- package/examples/README.md +3 -1
- package/examples/cancel-nfse.ts +29 -0
- package/examples/client-resource.ts +3 -5
- package/examples/emit-homologation.ts +3 -4
- package/examples/handle-errors.ts +3 -3
- package/examples/recover-emission.ts +29 -0
- package/llms.txt +97 -82
- package/package.json +31 -6
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dpsJsonSchema.js","sourceRoot":"","sources":["../dpsJsonSchema.ts"],"names":[],"mappings":"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"}
|
package/dist/emissaoNota.d.ts
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import type { Ambiente } from './config.js';
|
|
2
2
|
import type { DpsJsonRequest } from './dpsJson.js';
|
|
3
|
-
import type
|
|
4
|
-
import type { SefinErro } from './sefinClient.js';
|
|
3
|
+
import { type CertificateInput } from './certificate.js';
|
|
4
|
+
import type { SefinErro, SefinRequestOptions } from './sefinClient.js';
|
|
5
5
|
export type NotaInput = DpsJsonRequest | string;
|
|
6
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Transport options for emission. There is deliberately no `retries`: POST /nfse
|
|
8
|
+
* is not idempotent. After a timeout, call `recuperarNfsePorDps(dpsId)` first.
|
|
9
|
+
*/
|
|
10
|
+
export type TransmissaoOptions = Omit<SefinRequestOptions, 'retries'>;
|
|
11
|
+
export interface EmitirNotaOptions extends TransmissaoOptions {
|
|
7
12
|
ambiente?: Ambiente;
|
|
8
13
|
/** Obrigatorio quando o input for XML sem Id em <infDPS>. */
|
|
9
14
|
dpsId?: string;
|
|
@@ -28,13 +33,13 @@ export interface NotaPreparada {
|
|
|
28
33
|
unsignedXml: string;
|
|
29
34
|
signedXml: string;
|
|
30
35
|
}
|
|
31
|
-
export declare function prepararNota(input: NotaInput, pfx:
|
|
36
|
+
export declare function prepararNota(input: NotaInput, pfx: CertificateInput, options?: EmitirNotaOptions): NotaPreparada;
|
|
32
37
|
/** Sends an already validated, signed and persistable DPS. */
|
|
33
|
-
export declare function transmitirNotaPreparada(nota: NotaPreparada, pfx:
|
|
38
|
+
export declare function transmitirNotaPreparada(nota: NotaPreparada, pfx: CertificateInput, options?: TransmissaoOptions): Promise<ResultadoEmissaoNota>;
|
|
34
39
|
/**
|
|
35
40
|
* Emite uma NFS-e a partir de XML de DPS ou JSON declarativo.
|
|
36
41
|
*
|
|
37
42
|
* O metodo centraliza a burocracia do protocolo: monta XML quando recebe JSON,
|
|
38
43
|
* assina, compacta em GZip/Base64, envia por mTLS e normaliza rejeicoes.
|
|
39
44
|
*/
|
|
40
|
-
export declare function emitirNfse(input: NotaInput, pfx:
|
|
45
|
+
export declare function emitirNfse(input: NotaInput, pfx: CertificateInput, options?: EmitirNotaOptions): Promise<ResultadoEmissaoNota>;
|
package/dist/emissaoNota.js
CHANGED
|
@@ -6,7 +6,8 @@ import { extrairErros, transmitirDpsCompactada } from './sefinClient.js';
|
|
|
6
6
|
import { gzipBase64, gunzipBase64 } from './gzipB64.js';
|
|
7
7
|
import { signDps } from './signXml.js';
|
|
8
8
|
import { verifyDps } from './signXml.js';
|
|
9
|
-
import { validateDpsXmlAgainstXsd,
|
|
9
|
+
import { validateDpsXmlAgainstXsd, XsdEngineUnavailableError } from './xsdValidation.js';
|
|
10
|
+
import { resolveCredentials } from './certificate.js';
|
|
10
11
|
export class EmitirNotaError extends Error {
|
|
11
12
|
status;
|
|
12
13
|
erros;
|
|
@@ -51,17 +52,20 @@ export function prepararNota(input, pfx, options = {}) {
|
|
|
51
52
|
validateDpsXmlAgainstXsd(unsignedXml);
|
|
52
53
|
assertCertificateValidity(pfx);
|
|
53
54
|
const signedXml = signDps(unsignedXml, dpsId, pfx);
|
|
54
|
-
if (!verifyDps(signedXml, pfx.certPem)) {
|
|
55
|
+
if (!verifyDps(signedXml, resolveCredentials(pfx).certPem)) {
|
|
55
56
|
throw new Error('A assinatura XML da DPS nao pode ser verificada.');
|
|
56
57
|
}
|
|
57
58
|
return { ambiente, dpsId, unsignedXml, signedXml };
|
|
58
59
|
}
|
|
59
60
|
/** Sends an already validated, signed and persistable DPS. */
|
|
60
|
-
export async function transmitirNotaPreparada(nota, pfx) {
|
|
61
|
+
export async function transmitirNotaPreparada(nota, pfx, options = {}) {
|
|
61
62
|
assertEnvironment(dpsEnvironment(nota.signedXml), nota.ambiente);
|
|
62
63
|
assertCertificateValidity(pfx);
|
|
63
64
|
const dpsXmlGZipB64 = gzipBase64(nota.signedXml);
|
|
64
|
-
const { status, body } = await transmitirDpsCompactada(dpsXmlGZipB64, pfx, nota.ambiente
|
|
65
|
+
const { status, body } = await transmitirDpsCompactada(dpsXmlGZipB64, pfx, nota.ambiente, {
|
|
66
|
+
timeoutMs: options.timeoutMs,
|
|
67
|
+
signal: options.signal,
|
|
68
|
+
});
|
|
65
69
|
const nfseB64 = body?.nfseXmlGZipB64 ?? body?.NfseXmlGZipB64;
|
|
66
70
|
if (status >= 200 && status < 300 && nfseB64) {
|
|
67
71
|
try {
|
|
@@ -70,7 +74,7 @@ export async function transmitirNotaPreparada(nota, pfx) {
|
|
|
70
74
|
return { chaveAcesso, dpsId: nota.dpsId, nfseXml, status, body };
|
|
71
75
|
}
|
|
72
76
|
catch (error) {
|
|
73
|
-
if (error instanceof
|
|
77
|
+
if (error instanceof XsdEngineUnavailableError)
|
|
74
78
|
throw error;
|
|
75
79
|
const message = error instanceof Error ? error.message : String(error);
|
|
76
80
|
throw new EmitirNotaError(`Resposta de autorizacao invalida (HTTP ${status}): ${message}`, status, [{ Codigo: 'INVALID_AUTHORIZATION_RESPONSE', Descricao: message }], nota.dpsId, body);
|
|
@@ -88,6 +92,6 @@ export async function transmitirNotaPreparada(nota, pfx) {
|
|
|
88
92
|
* assina, compacta em GZip/Base64, envia por mTLS e normaliza rejeicoes.
|
|
89
93
|
*/
|
|
90
94
|
export async function emitirNfse(input, pfx, options = {}) {
|
|
91
|
-
return transmitirNotaPreparada(prepararNota(input, pfx, options), pfx);
|
|
95
|
+
return transmitirNotaPreparada(prepararNota(input, pfx, options), pfx, options);
|
|
92
96
|
}
|
|
93
97
|
//# sourceMappingURL=emissaoNota.js.map
|
package/dist/emissaoNota.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emissaoNota.js","sourceRoot":"","sources":["../emissaoNota.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,wBAAwB,EAAE,
|
|
1
|
+
{"version":3,"file":"emissaoNota.js","sourceRoot":"","sources":["../emissaoNota.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import type { Ambiente } from './config.js';
|
|
2
|
+
/** Event types the builder supports (pedRegEvento layout v1.01). */
|
|
3
|
+
export declare const TP_EVENTO: {
|
|
4
|
+
readonly cancelamento: "101101";
|
|
5
|
+
readonly cancelamentoPorSubstituicao: "105102";
|
|
6
|
+
};
|
|
7
|
+
export type TpEvento = (typeof TP_EVENTO)[keyof typeof TP_EVENTO];
|
|
8
|
+
/** Justificativas do cancelamento (TSCodJustCanc). */
|
|
9
|
+
export declare const MOTIVO_CANCELAMENTO: {
|
|
10
|
+
readonly erroNaEmissao: "1";
|
|
11
|
+
readonly servicoNaoPrestado: "2";
|
|
12
|
+
readonly outros: "9";
|
|
13
|
+
};
|
|
14
|
+
/** Justificativas do cancelamento por substituicao (TSCodJustSubst). */
|
|
15
|
+
export declare const MOTIVO_SUBSTITUICAO: {
|
|
16
|
+
readonly desenquadramentoSimplesNacional: "01";
|
|
17
|
+
readonly enquadramentoSimplesNacional: "02";
|
|
18
|
+
readonly inclusaoRetroativaImunidadeIsencao: "03";
|
|
19
|
+
readonly exclusaoRetroativaImunidadeIsencao: "04";
|
|
20
|
+
readonly rejeicaoPeloTomadorOuIntermediario: "05";
|
|
21
|
+
readonly outros: "99";
|
|
22
|
+
};
|
|
23
|
+
export type MotivoCancelamento = (typeof MOTIVO_CANCELAMENTO)[keyof typeof MOTIVO_CANCELAMENTO];
|
|
24
|
+
export type MotivoSubstituicao = (typeof MOTIVO_SUBSTITUICAO)[keyof typeof MOTIVO_SUBSTITUICAO];
|
|
25
|
+
export interface AutorEvento {
|
|
26
|
+
/** CNPJ do autor do evento (14 digitos). Informe CNPJ ou CPF, nunca ambos. */
|
|
27
|
+
CNPJ?: string;
|
|
28
|
+
/** CPF do autor do evento (11 digitos). */
|
|
29
|
+
CPF?: string;
|
|
30
|
+
}
|
|
31
|
+
export interface PedRegEventoBase {
|
|
32
|
+
ambiente?: Ambiente;
|
|
33
|
+
/** Chave de acesso da NFS-e (50 digitos). */
|
|
34
|
+
chaveAcesso: string;
|
|
35
|
+
autor: AutorEvento;
|
|
36
|
+
/** Data/hora do evento (AAAA-MM-DDThh:mm:ssTZD). Default: agora, horario de Brasilia. */
|
|
37
|
+
dhEvento?: string;
|
|
38
|
+
verAplic?: string;
|
|
39
|
+
}
|
|
40
|
+
export interface CancelamentoNfseInput extends PedRegEventoBase {
|
|
41
|
+
/** 1 = Erro na Emissao; 2 = Servico nao Prestado; 9 = Outros. */
|
|
42
|
+
cMotivo: MotivoCancelamento;
|
|
43
|
+
/** Justificativa com 15 a 255 caracteres. */
|
|
44
|
+
xMotivo: string;
|
|
45
|
+
}
|
|
46
|
+
export interface CancelamentoPorSubstituicaoInput extends PedRegEventoBase {
|
|
47
|
+
/** Veja {@link MOTIVO_SUBSTITUICAO}. */
|
|
48
|
+
cMotivo: MotivoSubstituicao;
|
|
49
|
+
/** Justificativa opcional com 15 a 255 caracteres. */
|
|
50
|
+
xMotivo?: string;
|
|
51
|
+
/** Chave de acesso da NFS-e substituta (50 digitos). */
|
|
52
|
+
chaveSubstituta: string;
|
|
53
|
+
}
|
|
54
|
+
export interface BuiltPedRegEvento {
|
|
55
|
+
/** Id do infPedReg: "PRE" + chave (50) + tpEvento (6). */
|
|
56
|
+
id: string;
|
|
57
|
+
xml: string;
|
|
58
|
+
tpEvento: TpEvento;
|
|
59
|
+
chaveAcesso: string;
|
|
60
|
+
ambiente: Ambiente;
|
|
61
|
+
}
|
|
62
|
+
/** The event input is invalid; raised before signing or any network I/O. */
|
|
63
|
+
export declare class EventoInvalidoError extends Error {
|
|
64
|
+
readonly field: string;
|
|
65
|
+
readonly code = "EVENTO_INVALID";
|
|
66
|
+
constructor(field: string, message: string);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Id do pedido de registro de evento (TSIdPedRegEvt):
|
|
70
|
+
* "PRE" + chave de acesso (50) + tipo do evento (6) = PRE[0-9]{56}.
|
|
71
|
+
*/
|
|
72
|
+
export declare function buildPedRegEventoId(chaveAcesso: string, tpEvento: TpEvento | string): string;
|
|
73
|
+
/** Monta o pedido de registro do evento e101101 (Cancelamento de NFS-e). Nao assina. */
|
|
74
|
+
export declare function buildCancelamentoFromJson(input: CancelamentoNfseInput): BuiltPedRegEvento;
|
|
75
|
+
/** Monta o pedido de registro do evento e105102 (Cancelamento de NFS-e por Substituicao). Nao assina. */
|
|
76
|
+
export declare function buildCancelamentoPorSubstituicaoFromJson(input: CancelamentoPorSubstituicaoInput): BuiltPedRegEvento;
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { DEFAULT_AMBIENTE, TP_AMB } from './config.js';
|
|
2
|
+
import { el, nowSaoPauloOffset, onlyDigits, requiredTextEl, textEl } from './xmlBuild.js';
|
|
3
|
+
const NS = 'http://www.sped.fazenda.gov.br/nfse';
|
|
4
|
+
const VERSAO = '1.01';
|
|
5
|
+
const VER_APLIC = 'UseInvio';
|
|
6
|
+
/** Event types the builder supports (pedRegEvento layout v1.01). */
|
|
7
|
+
export const TP_EVENTO = {
|
|
8
|
+
cancelamento: '101101',
|
|
9
|
+
cancelamentoPorSubstituicao: '105102',
|
|
10
|
+
};
|
|
11
|
+
/** Justificativas do cancelamento (TSCodJustCanc). */
|
|
12
|
+
export const MOTIVO_CANCELAMENTO = {
|
|
13
|
+
erroNaEmissao: '1',
|
|
14
|
+
servicoNaoPrestado: '2',
|
|
15
|
+
outros: '9',
|
|
16
|
+
};
|
|
17
|
+
/** Justificativas do cancelamento por substituicao (TSCodJustSubst). */
|
|
18
|
+
export const MOTIVO_SUBSTITUICAO = {
|
|
19
|
+
desenquadramentoSimplesNacional: '01',
|
|
20
|
+
enquadramentoSimplesNacional: '02',
|
|
21
|
+
inclusaoRetroativaImunidadeIsencao: '03',
|
|
22
|
+
exclusaoRetroativaImunidadeIsencao: '04',
|
|
23
|
+
rejeicaoPeloTomadorOuIntermediario: '05',
|
|
24
|
+
outros: '99',
|
|
25
|
+
};
|
|
26
|
+
/** The event input is invalid; raised before signing or any network I/O. */
|
|
27
|
+
export class EventoInvalidoError extends Error {
|
|
28
|
+
field;
|
|
29
|
+
code = 'EVENTO_INVALID';
|
|
30
|
+
constructor(field, message) {
|
|
31
|
+
super(message);
|
|
32
|
+
this.field = field;
|
|
33
|
+
this.name = 'EventoInvalidoError';
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function requireChave(value, field) {
|
|
37
|
+
if (typeof value !== 'string' || !/^\d{50}$/.test(value)) {
|
|
38
|
+
throw new EventoInvalidoError(field, `${field} deve ter exatamente 50 digitos numericos.`);
|
|
39
|
+
}
|
|
40
|
+
return value;
|
|
41
|
+
}
|
|
42
|
+
function requireMotivo(value, field) {
|
|
43
|
+
if (typeof value !== 'string' || value.trim() !== value || value.length < 15 || value.length > 255) {
|
|
44
|
+
throw new EventoInvalidoError(field, `${field} deve ter entre 15 e 255 caracteres, sem espacos nas pontas.`);
|
|
45
|
+
}
|
|
46
|
+
return value;
|
|
47
|
+
}
|
|
48
|
+
function buildAutor(autor) {
|
|
49
|
+
const hasCnpj = autor?.CNPJ != null && autor.CNPJ !== '';
|
|
50
|
+
const hasCpf = autor?.CPF != null && autor.CPF !== '';
|
|
51
|
+
if (hasCnpj === hasCpf) {
|
|
52
|
+
throw new EventoInvalidoError('autor', 'autor deve informar exatamente um de: CNPJ, CPF.');
|
|
53
|
+
}
|
|
54
|
+
if (hasCnpj) {
|
|
55
|
+
const cnpj = onlyDigits(autor.CNPJ);
|
|
56
|
+
if (cnpj.length !== 14)
|
|
57
|
+
throw new EventoInvalidoError('autor.CNPJ', `autor.CNPJ deve ter 14 digitos (recebido ${cnpj.length}).`);
|
|
58
|
+
return textEl('CNPJAutor', cnpj);
|
|
59
|
+
}
|
|
60
|
+
const cpf = onlyDigits(autor.CPF);
|
|
61
|
+
if (cpf.length !== 11)
|
|
62
|
+
throw new EventoInvalidoError('autor.CPF', `autor.CPF deve ter 11 digitos (recebido ${cpf.length}).`);
|
|
63
|
+
return textEl('CPFAutor', cpf);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Id do pedido de registro de evento (TSIdPedRegEvt):
|
|
67
|
+
* "PRE" + chave de acesso (50) + tipo do evento (6) = PRE[0-9]{56}.
|
|
68
|
+
*/
|
|
69
|
+
export function buildPedRegEventoId(chaveAcesso, tpEvento) {
|
|
70
|
+
const chave = requireChave(chaveAcesso, 'chaveAcesso');
|
|
71
|
+
if (!/^\d{6}$/.test(String(tpEvento))) {
|
|
72
|
+
throw new EventoInvalidoError('tpEvento', 'tpEvento deve ter 6 digitos (ex.: 101101).');
|
|
73
|
+
}
|
|
74
|
+
return `PRE${chave}${tpEvento}`;
|
|
75
|
+
}
|
|
76
|
+
function buildPedRegEvento(base, tpEvento, eventoXml) {
|
|
77
|
+
const ambiente = base.ambiente ?? DEFAULT_AMBIENTE;
|
|
78
|
+
if (!(ambiente in TP_AMB))
|
|
79
|
+
throw new EventoInvalidoError('ambiente', 'ambiente deve ser "restrita" ou "producao".');
|
|
80
|
+
const chave = requireChave(base.chaveAcesso, 'chaveAcesso');
|
|
81
|
+
const id = buildPedRegEventoId(chave, tpEvento);
|
|
82
|
+
const infPedReg = el('infPedReg', [
|
|
83
|
+
requiredTextEl('tpAmb', TP_AMB[ambiente]),
|
|
84
|
+
requiredTextEl('verAplic', base.verAplic ?? VER_APLIC),
|
|
85
|
+
requiredTextEl('dhEvento', base.dhEvento ?? nowSaoPauloOffset()),
|
|
86
|
+
buildAutor(base.autor),
|
|
87
|
+
requiredTextEl('chNFSe', chave),
|
|
88
|
+
eventoXml,
|
|
89
|
+
].join(''), { Id: id });
|
|
90
|
+
return {
|
|
91
|
+
id,
|
|
92
|
+
xml: el('pedRegEvento', infPedReg, { versao: VERSAO, xmlns: NS }),
|
|
93
|
+
tpEvento,
|
|
94
|
+
chaveAcesso: chave,
|
|
95
|
+
ambiente,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
/** Monta o pedido de registro do evento e101101 (Cancelamento de NFS-e). Nao assina. */
|
|
99
|
+
export function buildCancelamentoFromJson(input) {
|
|
100
|
+
if (!Object.values(MOTIVO_CANCELAMENTO).includes(input.cMotivo)) {
|
|
101
|
+
throw new EventoInvalidoError('cMotivo', 'cMotivo do cancelamento deve ser 1 (Erro na Emissao), 2 (Servico nao Prestado) ou 9 (Outros).');
|
|
102
|
+
}
|
|
103
|
+
const evento = el('e101101', [
|
|
104
|
+
requiredTextEl('xDesc', 'Cancelamento de NFS-e'),
|
|
105
|
+
requiredTextEl('cMotivo', input.cMotivo),
|
|
106
|
+
requiredTextEl('xMotivo', requireMotivo(input.xMotivo, 'xMotivo')),
|
|
107
|
+
].join(''));
|
|
108
|
+
return buildPedRegEvento(input, TP_EVENTO.cancelamento, evento);
|
|
109
|
+
}
|
|
110
|
+
/** Monta o pedido de registro do evento e105102 (Cancelamento de NFS-e por Substituicao). Nao assina. */
|
|
111
|
+
export function buildCancelamentoPorSubstituicaoFromJson(input) {
|
|
112
|
+
if (!Object.values(MOTIVO_SUBSTITUICAO).includes(input.cMotivo)) {
|
|
113
|
+
throw new EventoInvalidoError('cMotivo', 'cMotivo do cancelamento por substituicao deve ser 01, 02, 03, 04, 05 ou 99.');
|
|
114
|
+
}
|
|
115
|
+
const chave = requireChave(input.chaveAcesso, 'chaveAcesso');
|
|
116
|
+
const substituta = requireChave(input.chaveSubstituta, 'chaveSubstituta');
|
|
117
|
+
if (substituta === chave) {
|
|
118
|
+
throw new EventoInvalidoError('chaveSubstituta', 'chaveSubstituta deve ser diferente da chave da NFS-e cancelada.');
|
|
119
|
+
}
|
|
120
|
+
const evento = el('e105102', [
|
|
121
|
+
requiredTextEl('xDesc', 'Cancelamento de NFS-e por Substituição'),
|
|
122
|
+
requiredTextEl('cMotivo', input.cMotivo),
|
|
123
|
+
input.xMotivo != null ? textEl('xMotivo', requireMotivo(input.xMotivo, 'xMotivo')) : '',
|
|
124
|
+
requiredTextEl('chSubstituta', substituta),
|
|
125
|
+
].join(''));
|
|
126
|
+
return buildPedRegEvento(input, TP_EVENTO.cancelamentoPorSubstituicao, evento);
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=eventoJson.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventoJson.js","sourceRoot":"","sources":["../eventoJson.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAG1F,MAAM,EAAE,GAAG,qCAAqC,CAAC;AACjD,MAAM,MAAM,GAAG,MAAM,CAAC;AACtB,MAAM,SAAS,GAAG,UAAU,CAAC;AAE7B,oEAAoE;AACpE,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,YAAY,EAAE,QAAQ;IACtB,2BAA2B,EAAE,QAAQ;CAC7B,CAAC;AAIX,sDAAsD;AACtD,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,aAAa,EAAE,GAAG;IAClB,kBAAkB,EAAE,GAAG;IACvB,MAAM,EAAE,GAAG;CACH,CAAC;AAEX,wEAAwE;AACxE,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,+BAA+B,EAAE,IAAI;IACrC,4BAA4B,EAAE,IAAI;IAClC,kCAAkC,EAAE,IAAI;IACxC,kCAAkC,EAAE,IAAI;IACxC,kCAAkC,EAAE,IAAI;IACxC,MAAM,EAAE,IAAI;CACJ,CAAC;AA+CX,4EAA4E;AAC5E,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAEhB;IADnB,IAAI,GAAG,gBAAgB,CAAC;IACjC,YAA4B,KAAa,EAAE,OAAe;QACxD,KAAK,CAAC,OAAO,CAAC,CAAC;QADW,UAAK,GAAL,KAAK,CAAQ;QAEvC,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED,SAAS,YAAY,CAAC,KAAc,EAAE,KAAa;IACjD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,mBAAmB,CAAC,KAAK,EAAE,GAAG,KAAK,4CAA4C,CAAC,CAAC;IAC7F,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,KAAc,EAAE,KAAa;IAClD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QACnG,MAAM,IAAI,mBAAmB,CAAC,KAAK,EAAE,GAAG,KAAK,8DAA8D,CAAC,CAAC;IAC/G,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAC,KAA8B;IAChD,MAAM,OAAO,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC;IACzD,MAAM,MAAM,GAAG,KAAK,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,CAAC,GAAG,KAAK,EAAE,CAAC;IACtD,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,IAAI,mBAAmB,CAAC,OAAO,EAAE,kDAAkD,CAAC,CAAC;IAC7F,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,UAAU,CAAC,KAAM,CAAC,IAAK,CAAC,CAAC;QACtC,IAAI,IAAI,CAAC,MAAM,KAAK,EAAE;YAAE,MAAM,IAAI,mBAAmB,CAAC,YAAY,EAAE,4CAA4C,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QACjI,OAAO,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IACD,MAAM,GAAG,GAAG,UAAU,CAAC,KAAM,CAAC,GAAI,CAAC,CAAC;IACpC,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE;QAAE,MAAM,IAAI,mBAAmB,CAAC,WAAW,EAAE,2CAA2C,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;IAC7H,OAAO,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;AACjC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,WAAmB,EAAE,QAA2B;IAClF,MAAM,KAAK,GAAG,YAAY,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACvD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,mBAAmB,CAAC,UAAU,EAAE,4CAA4C,CAAC,CAAC;IAC1F,CAAC;IACD,OAAO,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAsB,EAAE,QAAkB,EAAE,SAAiB;IACtF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,gBAAgB,CAAC;IACnD,IAAI,CAAC,CAAC,QAAQ,IAAI,MAAM,CAAC;QAAE,MAAM,IAAI,mBAAmB,CAAC,UAAU,EAAE,6CAA6C,CAAC,CAAC;IACpH,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAC5D,MAAM,EAAE,GAAG,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAEhD,MAAM,SAAS,GAAG,EAAE,CAClB,WAAW,EACX;QACE,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACzC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC;QACtD,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,IAAI,iBAAiB,EAAE,CAAC;QAChE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;QACtB,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC;QAC/B,SAAS;KACV,CAAC,IAAI,CAAC,EAAE,CAAC,EACV,EAAE,EAAE,EAAE,EAAE,EAAE,CACX,CAAC;IAEF,OAAO;QACL,EAAE;QACF,GAAG,EAAE,EAAE,CAAC,cAAc,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QACjE,QAAQ;QACR,WAAW,EAAE,KAAK;QAClB,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,yBAAyB,CAAC,KAA4B;IACpE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,mBAAmB,CAAC,SAAS,EAAE,+FAA+F,CAAC,CAAC;IAC5I,CAAC;IACD,MAAM,MAAM,GAAG,EAAE,CACf,SAAS,EACT;QACE,cAAc,CAAC,OAAO,EAAE,uBAAuB,CAAC;QAChD,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC;QACxC,cAAc,CAAC,SAAS,EAAE,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;KACnE,CAAC,IAAI,CAAC,EAAE,CAAC,CACX,CAAC;IACF,OAAO,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AAClE,CAAC;AAED,yGAAyG;AACzG,MAAM,UAAU,wCAAwC,CAAC,KAAuC;IAC9F,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,mBAAmB,CAAC,SAAS,EAAE,6EAA6E,CAAC,CAAC;IAC1H,CAAC;IACD,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;IAC1E,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,mBAAmB,CAAC,iBAAiB,EAAE,iEAAiE,CAAC,CAAC;IACtH,CAAC;IACD,MAAM,MAAM,GAAG,EAAE,CACf,SAAS,EACT;QACE,cAAc,CAAC,OAAO,EAAE,wCAAwC,CAAC;QACjE,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC;QACxC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;QACvF,cAAc,CAAC,cAAc,EAAE,UAAU,CAAC;KAC3C,CAAC,IAAI,CAAC,EAAE,CAAC,CACX,CAAC;IACF,OAAO,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAC;AACjF,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type CertificateInput } from './certificate.js';
|
|
2
|
+
import type { AutorEvento, BuiltPedRegEvento, CancelamentoNfseInput, CancelamentoPorSubstituicaoInput } from './eventoJson.js';
|
|
3
|
+
import type { SefinErro, SefinRequestOptions } from './sefinClient.js';
|
|
4
|
+
/** Event request options. Events are POSTs and are never retried automatically. */
|
|
5
|
+
export type RegistrarEventoOptions = Omit<SefinRequestOptions, 'retries'>;
|
|
6
|
+
export interface ResultadoEvento {
|
|
7
|
+
pedRegEventoId: string;
|
|
8
|
+
tpEvento: string;
|
|
9
|
+
chaveAcesso: string;
|
|
10
|
+
/** Signed pedRegEvento that was sent. Persist it with the result. */
|
|
11
|
+
pedRegEventoXml: string;
|
|
12
|
+
/** XML do evento registrado, quando devolvido pela SEFIN. */
|
|
13
|
+
eventoXml?: string;
|
|
14
|
+
status: number;
|
|
15
|
+
body: any;
|
|
16
|
+
}
|
|
17
|
+
export declare class RegistrarEventoError extends Error {
|
|
18
|
+
readonly status: number;
|
|
19
|
+
readonly erros: SefinErro[];
|
|
20
|
+
readonly pedRegEventoId: string;
|
|
21
|
+
readonly body: any;
|
|
22
|
+
constructor(message: string, status: number, erros: SefinErro[], pedRegEventoId: string, body: any);
|
|
23
|
+
}
|
|
24
|
+
/** Input for the high-level helpers: `autor` defaults to the certificate holder's CNPJ/CPF. */
|
|
25
|
+
export type ComAutorOpcional<T extends {
|
|
26
|
+
autor: AutorEvento;
|
|
27
|
+
}> = Omit<T, 'autor'> & {
|
|
28
|
+
autor?: AutorEvento;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Validates the pedRegEvento against the official XSD, signs `infPedReg`,
|
|
32
|
+
* compresses and sends it to POST /nfse/{chave}/eventos, normalizing rejections.
|
|
33
|
+
*/
|
|
34
|
+
export declare function registrarEvento(built: BuiltPedRegEvento, certificate: CertificateInput, options?: RegistrarEventoOptions): Promise<ResultadoEvento>;
|
|
35
|
+
/** Cancela uma NFS-e (evento e101101): monta, valida, assina, compacta e envia o pedido. */
|
|
36
|
+
export declare function cancelarNfse(input: ComAutorOpcional<CancelamentoNfseInput>, certificate: CertificateInput, options?: RegistrarEventoOptions): Promise<ResultadoEvento>;
|
|
37
|
+
/** Cancela uma NFS-e por substituicao (evento e105102). A NFS-e substituta deve ter sido emitida antes. */
|
|
38
|
+
export declare function cancelarNfsePorSubstituicao(input: ComAutorOpcional<CancelamentoPorSubstituicaoInput>, certificate: CertificateInput, options?: RegistrarEventoOptions): Promise<ResultadoEvento>;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { assertCertificateValidity } from './certificateValidation.js';
|
|
2
|
+
import { NfseCertificate } from './certificate.js';
|
|
3
|
+
import { buildCancelamentoFromJson, buildCancelamentoPorSubstituicaoFromJson, EventoInvalidoError, } from './eventoJson.js';
|
|
4
|
+
import { gunzipBase64Flexivel, gzipBase64 } from './gzipB64.js';
|
|
5
|
+
import { enviarEvento, extrairErros } from './sefinClient.js';
|
|
6
|
+
import { signEnveloped } from './signXml.js';
|
|
7
|
+
import { validatePedRegEventoXmlAgainstXsd } from './xsdValidation.js';
|
|
8
|
+
export class RegistrarEventoError extends Error {
|
|
9
|
+
status;
|
|
10
|
+
erros;
|
|
11
|
+
pedRegEventoId;
|
|
12
|
+
body;
|
|
13
|
+
constructor(message, status, erros, pedRegEventoId, body) {
|
|
14
|
+
super(message);
|
|
15
|
+
this.status = status;
|
|
16
|
+
this.erros = erros;
|
|
17
|
+
this.pedRegEventoId = pedRegEventoId;
|
|
18
|
+
this.body = body;
|
|
19
|
+
this.name = 'RegistrarEventoError';
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
function autorDoCertificado(certificate) {
|
|
23
|
+
if (certificate instanceof NfseCertificate) {
|
|
24
|
+
if (certificate.cnpj)
|
|
25
|
+
return { CNPJ: certificate.cnpj };
|
|
26
|
+
if (certificate.cpf)
|
|
27
|
+
return { CPF: certificate.cpf };
|
|
28
|
+
}
|
|
29
|
+
throw new EventoInvalidoError('autor', 'Informe autor.CNPJ ou autor.CPF: o certificado nao expoe o documento do titular.');
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Validates the pedRegEvento against the official XSD, signs `infPedReg`,
|
|
33
|
+
* compresses and sends it to POST /nfse/{chave}/eventos, normalizing rejections.
|
|
34
|
+
*/
|
|
35
|
+
export async function registrarEvento(built, certificate, options) {
|
|
36
|
+
validatePedRegEventoXmlAgainstXsd(built.xml);
|
|
37
|
+
assertCertificateValidity(certificate);
|
|
38
|
+
const pedRegEventoXml = signEnveloped(built.xml, built.id, 'infPedReg', certificate);
|
|
39
|
+
const { status, body } = await enviarEvento(gzipBase64(pedRegEventoXml), certificate, built.chaveAcesso, built.ambiente, { ...options, retries: 0 });
|
|
40
|
+
if (status >= 200 && status < 300) {
|
|
41
|
+
const eventoB64 = body?.eventoXmlGZipB64 ?? body?.EventoXmlGZipB64;
|
|
42
|
+
let eventoXml;
|
|
43
|
+
if (typeof eventoB64 === 'string' && eventoB64) {
|
|
44
|
+
try {
|
|
45
|
+
eventoXml = gunzipBase64Flexivel(eventoB64);
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
// Unexpected payload: the raw body stays available to the caller.
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
pedRegEventoId: built.id,
|
|
53
|
+
tpEvento: built.tpEvento,
|
|
54
|
+
chaveAcesso: built.chaveAcesso,
|
|
55
|
+
pedRegEventoXml,
|
|
56
|
+
eventoXml,
|
|
57
|
+
status,
|
|
58
|
+
body,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
throw new RegistrarEventoError(`Registro de evento rejeitado (HTTP ${status})`, status, extrairErros(body), built.id, body);
|
|
62
|
+
}
|
|
63
|
+
/** Cancela uma NFS-e (evento e101101): monta, valida, assina, compacta e envia o pedido. */
|
|
64
|
+
export async function cancelarNfse(input, certificate, options) {
|
|
65
|
+
const built = buildCancelamentoFromJson({ ...input, autor: input.autor ?? autorDoCertificado(certificate) });
|
|
66
|
+
return registrarEvento(built, certificate, options);
|
|
67
|
+
}
|
|
68
|
+
/** Cancela uma NFS-e por substituicao (evento e105102). A NFS-e substituta deve ter sido emitida antes. */
|
|
69
|
+
export async function cancelarNfsePorSubstituicao(input, certificate, options) {
|
|
70
|
+
const built = buildCancelamentoPorSubstituicaoFromJson({ ...input, autor: input.autor ?? autorDoCertificado(certificate) });
|
|
71
|
+
return registrarEvento(built, certificate, options);
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=eventosNfse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventosNfse.js","sourceRoot":"","sources":["../eventosNfse.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Code domains accepted by the JSON validator, shared with the JSON Schema so
|
|
3
|
+
* both reject the same values. Labels follow the v1.01 XSD documentation.
|
|
4
|
+
*/
|
|
5
|
+
export type LabeledDomain = Readonly<Record<string, string>>;
|
|
6
|
+
export declare const OP_SIMP_NAC: LabeledDomain;
|
|
7
|
+
export declare const REG_AP_TRIB_SN: LabeledDomain;
|
|
8
|
+
export declare const REG_ESP_TRIB: LabeledDomain;
|
|
9
|
+
export declare const TRIB_ISSQN: LabeledDomain;
|
|
10
|
+
export declare const TP_RET_ISSQN: LabeledDomain;
|
|
11
|
+
export declare const TP_IMUNIDADE: LabeledDomain;
|
|
12
|
+
/** `0` exists in the XSD but is restricted to notes imported from another origin. */
|
|
13
|
+
export declare const C_NAO_NIF: LabeledDomain;
|
|
14
|
+
export declare const TP_RET_PIS_COFINS: LabeledDomain;
|
|
15
|
+
export declare const PIS_COFINS_CST: readonly string[];
|
|
16
|
+
export declare const MD_PRESTACAO: LabeledDomain;
|
|
17
|
+
export declare const VINC_PREST: LabeledDomain;
|
|
18
|
+
export declare const MEC_AF_COMEX_P: readonly string[];
|
|
19
|
+
export declare const MEC_AF_COMEX_T: readonly string[];
|
|
20
|
+
export declare const MOV_TEMP_BENS: LabeledDomain;
|
|
21
|
+
export declare const MDIC: LabeledDomain;
|
|
22
|
+
export declare function domainValues(domain: LabeledDomain | readonly string[]): string[];
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Code domains accepted by the JSON validator, shared with the JSON Schema so
|
|
3
|
+
* both reject the same values. Labels follow the v1.01 XSD documentation.
|
|
4
|
+
*/
|
|
5
|
+
export const OP_SIMP_NAC = {
|
|
6
|
+
'1': 'Nao optante',
|
|
7
|
+
'2': 'Optante MEI',
|
|
8
|
+
'3': 'Optante ME/EPP',
|
|
9
|
+
};
|
|
10
|
+
export const REG_AP_TRIB_SN = {
|
|
11
|
+
'1': 'Tributos federais e municipal apurados pelo SN',
|
|
12
|
+
'2': 'Tributos federais pelo SN; ISSQN fora do SN',
|
|
13
|
+
'3': 'Tributos federais e municipal fora do SN',
|
|
14
|
+
};
|
|
15
|
+
export const REG_ESP_TRIB = {
|
|
16
|
+
'0': 'Nenhum',
|
|
17
|
+
'1': 'Ato cooperado (cooperativa)',
|
|
18
|
+
'2': 'Estimativa',
|
|
19
|
+
'3': 'Microempresa municipal',
|
|
20
|
+
'4': 'Notario ou registrador',
|
|
21
|
+
'5': 'Profissional autonomo',
|
|
22
|
+
'6': 'Sociedade de profissionais',
|
|
23
|
+
'9': 'Outros',
|
|
24
|
+
};
|
|
25
|
+
export const TRIB_ISSQN = {
|
|
26
|
+
'1': 'Operacao tributavel',
|
|
27
|
+
'2': 'Imunidade',
|
|
28
|
+
'3': 'Exportacao de servico',
|
|
29
|
+
'4': 'Nao incidencia',
|
|
30
|
+
};
|
|
31
|
+
export const TP_RET_ISSQN = {
|
|
32
|
+
'1': 'Nao retido',
|
|
33
|
+
'2': 'Retido pelo tomador',
|
|
34
|
+
'3': 'Retido pelo intermediario',
|
|
35
|
+
};
|
|
36
|
+
export const TP_IMUNIDADE = {
|
|
37
|
+
'0': 'Imunidade (tipo nao informado na nota de origem)',
|
|
38
|
+
'1': 'Patrimonio, renda ou servicos, uns dos outros (CF88, art. 150, VI, a)',
|
|
39
|
+
'2': 'Templos de qualquer culto (CF88, art. 150, VI, b)',
|
|
40
|
+
'3': 'Partidos politicos, sindicatos, educacao e assistencia social sem fins lucrativos (CF88, art. 150, VI, c)',
|
|
41
|
+
'4': 'Livros, jornais, periodicos e papel de impressao (CF88, art. 150, VI, d)',
|
|
42
|
+
'5': 'Fonogramas e videofonogramas musicais brasileiros (CF88, art. 150, VI, e)',
|
|
43
|
+
};
|
|
44
|
+
/** `0` exists in the XSD but is restricted to notes imported from another origin. */
|
|
45
|
+
export const C_NAO_NIF = {
|
|
46
|
+
'1': 'Dispensado do NIF',
|
|
47
|
+
'2': 'Nao exigencia do NIF',
|
|
48
|
+
};
|
|
49
|
+
export const TP_RET_PIS_COFINS = {
|
|
50
|
+
'0': 'PIS/COFINS/CSLL nao retidos',
|
|
51
|
+
'1': 'PIS/COFINS retidos',
|
|
52
|
+
'2': 'PIS/COFINS nao retidos',
|
|
53
|
+
'3': 'PIS/COFINS/CSLL retidos',
|
|
54
|
+
'4': 'PIS/COFINS retidos, CSLL nao retido',
|
|
55
|
+
'5': 'PIS retido, COFINS/CSLL nao retidos',
|
|
56
|
+
'6': 'COFINS retido, PIS/CSLL nao retidos',
|
|
57
|
+
'7': 'PIS nao retido, COFINS/CSLL retidos',
|
|
58
|
+
'8': 'PIS/COFINS nao retidos, CSLL retido',
|
|
59
|
+
'9': 'COFINS nao retido, PIS/CSLL retidos',
|
|
60
|
+
};
|
|
61
|
+
export const PIS_COFINS_CST = [
|
|
62
|
+
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
|
|
63
|
+
'49', '50', '51', '52', '53', '54', '55', '56',
|
|
64
|
+
'60', '61', '62', '63', '64', '65', '66', '67',
|
|
65
|
+
'70', '71', '72', '73', '74', '75', '98', '99',
|
|
66
|
+
];
|
|
67
|
+
export const MD_PRESTACAO = {
|
|
68
|
+
'0': 'Desconhecido',
|
|
69
|
+
'1': 'Transfronteirico',
|
|
70
|
+
'2': 'Consumo no Brasil',
|
|
71
|
+
'3': 'Presenca comercial no exterior',
|
|
72
|
+
'4': 'Movimento temporario de pessoas fisicas',
|
|
73
|
+
};
|
|
74
|
+
export const VINC_PREST = {
|
|
75
|
+
'0': 'Sem vinculo',
|
|
76
|
+
'1': 'Controlada',
|
|
77
|
+
'2': 'Controladora',
|
|
78
|
+
'3': 'Coligada',
|
|
79
|
+
'4': 'Matriz',
|
|
80
|
+
'5': 'Filial ou sucursal',
|
|
81
|
+
'6': 'Outro vinculo',
|
|
82
|
+
'9': 'Desconhecido',
|
|
83
|
+
};
|
|
84
|
+
export const MEC_AF_COMEX_P = Array.from({ length: 9 }, (_, i) => String(i).padStart(2, '0'));
|
|
85
|
+
export const MEC_AF_COMEX_T = Array.from({ length: 27 }, (_, i) => String(i).padStart(2, '0'));
|
|
86
|
+
export const MOV_TEMP_BENS = {
|
|
87
|
+
'0': 'Desconhecido',
|
|
88
|
+
'1': 'Nao',
|
|
89
|
+
'2': 'Vinculada a declaracao de importacao',
|
|
90
|
+
'3': 'Vinculada a declaracao de exportacao',
|
|
91
|
+
};
|
|
92
|
+
export const MDIC = {
|
|
93
|
+
'0': 'Nao enviar para o MDIC',
|
|
94
|
+
'1': 'Enviar para o MDIC',
|
|
95
|
+
};
|
|
96
|
+
export function domainValues(domain) {
|
|
97
|
+
return Array.isArray(domain) ? [...domain] : Object.keys(domain);
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=fiscalDomains.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fiscalDomains.js","sourceRoot":"","sources":["../fiscalDomains.ts"],"names":[],"mappings":"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"}
|