@bitize/bitmde 0.18.0 → 0.20.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 (61) hide show
  1. package/CHANGELOG.md +64 -0
  2. package/README.md +309 -4
  3. package/dist/apis/distribuicaoDFe-api.d.ts +13 -1
  4. package/dist/apis/distribuicaoNFSe-api.d.ts +176 -0
  5. package/dist/apis/manifestacaoNFSe-api.d.ts +130 -0
  6. package/dist/apis/recepcaoEvento-api.d.ts +5 -1
  7. package/dist/controllers/distribuicaoDFe-controller.d.ts +5 -1
  8. package/dist/controllers/distribuicaoNFSe-controller.d.ts +50 -0
  9. package/dist/controllers/index.d.ts +84 -0
  10. package/dist/controllers/manifestacaoNFSe-controller.d.ts +38 -0
  11. package/dist/controllers/recepcaoEvento-controller.d.ts +5 -1
  12. package/dist/env/ca.d.ts +8 -2
  13. package/dist/env/index.d.ts +5 -1
  14. package/dist/env/nfse.d.ts +32 -0
  15. package/dist/helpers/distribuicaoDFe-helper.d.ts +4 -0
  16. package/dist/helpers/distribuicaoNFSe-helper.d.ts +107 -0
  17. package/dist/helpers/index.d.ts +158 -0
  18. package/dist/helpers/manifestacaoNFSe-helper.d.ts +80 -0
  19. package/dist/helpers/recepcaoEvento-helper.d.ts +4 -0
  20. package/dist/helpers/retorno-helper.d.ts +5 -0
  21. package/dist/helpers/retornoNfse-helper.d.ts +44 -0
  22. package/dist/index.d.ts +13 -1
  23. package/dist/schemas/index.d.ts +17 -0
  24. package/dist/schemas/manifestacaoNFSe-schema.d.ts +33 -0
  25. package/dist/services/sefaz-service.d.ts +8 -1
  26. package/dist/util/assinatura.d.ts +3 -1
  27. package/dist/util/gzip.d.ts +7 -0
  28. package/dist/util/index.d.ts +2 -1
  29. package/dist/validators/chaveNfse-validator.d.ts +14 -0
  30. package/dist/validators/cnpj-validator.d.ts +19 -0
  31. package/dist/validators/index.d.ts +50 -0
  32. package/dist/validators/motivoRejeicao-validator.d.ts +23 -0
  33. package/dist/validators/nsuNfse-validator.d.ts +20 -0
  34. package/lib/apis/distribuicaoNFSe-api.js +59 -0
  35. package/lib/apis/manifestacaoNFSe-api.js +69 -0
  36. package/lib/controllers/distribuicaoNFSe-controller.js +16 -0
  37. package/lib/controllers/index.js +3 -1
  38. package/lib/controllers/manifestacaoNFSe-controller.js +25 -0
  39. package/lib/env/ca.js +3 -2
  40. package/lib/env/index.js +12 -1
  41. package/lib/env/nfse.js +24 -0
  42. package/lib/env/version.js +1 -1
  43. package/lib/helpers/distribuicaoDFe-helper.js +2 -2
  44. package/lib/helpers/distribuicaoNFSe-helper.js +128 -0
  45. package/lib/helpers/index.js +5 -2
  46. package/lib/helpers/manifestacaoNFSe-helper.js +105 -0
  47. package/lib/helpers/recepcaoEvento-helper.js +2 -2
  48. package/lib/helpers/retorno-helper.js +16 -9
  49. package/lib/helpers/retornoNfse-helper.js +31 -0
  50. package/lib/index.js +13 -1
  51. package/lib/schemas/index.js +2 -1
  52. package/lib/schemas/manifestacaoNFSe-schema.js +19 -0
  53. package/lib/services/sefaz-service.js +15 -14
  54. package/lib/util/assinatura.js +2 -2
  55. package/lib/util/gzip.js +8 -0
  56. package/lib/validators/chaveNfse-validator.js +16 -0
  57. package/lib/validators/cnpj-validator.js +21 -0
  58. package/lib/validators/index.js +5 -1
  59. package/lib/validators/motivoRejeicao-validator.js +28 -0
  60. package/lib/validators/nsuNfse-validator.js +18 -0
  61. package/package.json +10 -4
@@ -0,0 +1,59 @@
1
+ let DistribuicaoNFSeController = require("../controllers").DistribuicaoNFSeController, {
2
+ AmbienteValidator,
3
+ CertificadoValidator,
4
+ ChaveNfseValidator,
5
+ CnpjValidator,
6
+ NsuNfseValidator
7
+ } = require("../validators");
8
+
9
+ class DistribuicaoNFSe {
10
+ constructor(r) {
11
+ var {
12
+ requestOptions: e = {},
13
+ httpsOptions: t = {}
14
+ } = r.options || {}, i = new CertificadoValidator(r), o = new AmbienteValidator(r), r = new CnpjValidator(r);
15
+ if (!i.isValid()) throw new Error(i.getError());
16
+ if (!o.isValid()) throw new Error(o.getError());
17
+ if (!r.isValid()) throw new Error(r.getError());
18
+ var {
19
+ cert: i,
20
+ key: a
21
+ } = i.getValues(), o = o.getValues().tpAmb, r = r.getValues().cnpj;
22
+ this.config = Object.freeze({
23
+ cnpj: r,
24
+ tpAmb: o,
25
+ cert: i,
26
+ key: a,
27
+ requestOptions: Object.freeze(e),
28
+ httpsOptions: Object.freeze(t)
29
+ }), Object.freeze(this);
30
+ }
31
+ consultaChNFSe(r) {
32
+ var e, r = new ChaveNfseValidator(r);
33
+ if (r.isValid()) return e = r.getValues(), e = {
34
+ ...this.config,
35
+ chNFSe: e
36
+ }, DistribuicaoNFSeController.enviar(e);
37
+ throw new Error(r.getError());
38
+ }
39
+ consultaNSU(r) {
40
+ var e, r = new NsuNfseValidator(r, {
41
+ positivo: !0
42
+ });
43
+ if (r.isValid()) return e = r.getValues(), e = {
44
+ ...this.config,
45
+ nsu: e
46
+ }, DistribuicaoNFSeController.enviar(e);
47
+ throw new Error(r.getError());
48
+ }
49
+ consultaUltNSU(r) {
50
+ var e, r = new NsuNfseValidator(r);
51
+ if (r.isValid()) return e = r.getValues(), e = {
52
+ ...this.config,
53
+ ultNSU: e
54
+ }, DistribuicaoNFSeController.enviar(e);
55
+ throw new Error(r.getError());
56
+ }
57
+ }
58
+
59
+ module.exports = DistribuicaoNFSe;
@@ -0,0 +1,69 @@
1
+ let ManifestacaoNFSeController = require("../controllers").ManifestacaoNFSeController, {
2
+ EVENTOS_NFSE,
3
+ VERSION
4
+ } = require("../env"), Data = require("../util").Data, {
5
+ AmbienteValidator,
6
+ CertificadoValidator,
7
+ ChaveNfseValidator,
8
+ CnpjValidator,
9
+ MotivoRejeicaoValidator,
10
+ ZoneValidator
11
+ } = require("../validators");
12
+
13
+ function montarOpts(e, r, t) {
14
+ return {
15
+ ...e,
16
+ chNFSe: r,
17
+ evento: EVENTOS_NFSE[t],
18
+ verAplic: "bitmde/" + VERSION,
19
+ dhEvento: Data.toFormat(new Date(), e.timezone)
20
+ };
21
+ }
22
+
23
+ class ManifestacaoNFSe {
24
+ constructor(e) {
25
+ var {
26
+ requestOptions: r = {},
27
+ httpsOptions: t = {}
28
+ } = e.options || {}, o = new CertificadoValidator(e), a = new AmbienteValidator(e), i = new CnpjValidator(e), e = new ZoneValidator(e);
29
+ if (!o.isValid()) throw new Error(o.getError());
30
+ if (!a.isValid()) throw new Error(a.getError());
31
+ if (!i.isValid()) throw new Error(i.getError());
32
+ if (!e.isValid()) throw new Error(e.getError());
33
+ var {
34
+ cert: o,
35
+ key: n
36
+ } = o.getValues(), a = a.getValues().tpAmb, i = i.getValues().cnpj, e = e.getValues().timezone;
37
+ this.config = Object.freeze({
38
+ cnpj: i,
39
+ tpAmb: a,
40
+ timezone: e,
41
+ cert: o,
42
+ key: n,
43
+ requestOptions: Object.freeze(r),
44
+ httpsOptions: Object.freeze(t)
45
+ }), Object.freeze(this);
46
+ }
47
+ confirmar(e) {
48
+ var r, e = new ChaveNfseValidator(e);
49
+ if (e.isValid()) return r = montarOpts(this.config, e.getValues(), 203202),
50
+ ManifestacaoNFSeController.enviar(r);
51
+ throw new Error(e.getError());
52
+ }
53
+ rejeitar(e, r) {
54
+ e = new ChaveNfseValidator(e);
55
+ if (!e.isValid()) throw new Error(e.getError());
56
+ var t, o, r = new MotivoRejeicaoValidator(r);
57
+ if (r.isValid()) return {
58
+ cMotivo: t,
59
+ xMotivo: o
60
+ } = r.getValues(), e = {
61
+ ...montarOpts(this.config, e.getValues(), 203206),
62
+ cMotivo: t,
63
+ xMotivo: o
64
+ }, ManifestacaoNFSeController.enviar(e);
65
+ throw new Error(r.getError());
66
+ }
67
+ }
68
+
69
+ module.exports = ManifestacaoNFSe;
@@ -0,0 +1,16 @@
1
+ let {
2
+ DistribuicaoNFSeHelper,
3
+ RetornoNfseHelper
4
+ } = require("../helpers");
5
+
6
+ class DistribuicaoNFSeController {
7
+ static async enviar(e) {
8
+ var r = DistribuicaoNFSeHelper.montarRequest(e), r = await DistribuicaoNFSeHelper.enviarConsulta(r, e), e = await DistribuicaoNFSeHelper.montarResponse(r.data, e.cnpj);
9
+ return RetornoNfseHelper.montarRetorno({
10
+ json: e,
11
+ retorno: r
12
+ });
13
+ }
14
+ }
15
+
16
+ module.exports = Object.freeze(DistribuicaoNFSeController);
@@ -1,5 +1,7 @@
1
- let DistribuicaoController = require("./distribuicaoDFe-controller"), RecepcaoController = require("./recepcaoEvento-controller"), controller = Object.freeze({
1
+ let DistribuicaoController = require("./distribuicaoDFe-controller"), DistribuicaoNFSeController = require("./distribuicaoNFSe-controller"), ManifestacaoNFSeController = require("./manifestacaoNFSe-controller"), RecepcaoController = require("./recepcaoEvento-controller"), controller = Object.freeze({
2
2
  DistribuicaoController: DistribuicaoController,
3
+ DistribuicaoNFSeController: DistribuicaoNFSeController,
4
+ ManifestacaoNFSeController: ManifestacaoNFSeController,
3
5
  RecepcaoController: RecepcaoController
4
6
  });
5
7
 
@@ -0,0 +1,25 @@
1
+ let {
2
+ ManifestacaoNFSeHelper,
3
+ RetornoNfseHelper
4
+ } = require("../helpers");
5
+
6
+ class ManifestacaoNFSeController {
7
+ static async enviar(e) {
8
+ var {
9
+ reqXml: a,
10
+ config: r
11
+ } = await ManifestacaoNFSeHelper.montarRequest(e), r = await ManifestacaoNFSeHelper.enviarEvento(r, e), {
12
+ json: e,
13
+ falha: o
14
+ } = await ManifestacaoNFSeHelper.montarResponse(r.data);
15
+ return RetornoNfseHelper.montarRetorno({
16
+ json: e,
17
+ falha: o,
18
+ retorno: r,
19
+ servico: "SEFIN",
20
+ reqXml: a
21
+ });
22
+ }
23
+ }
24
+
25
+ module.exports = Object.freeze(ManifestacaoNFSeController);
package/lib/env/ca.js CHANGED
@@ -1,5 +1,6 @@
1
- let CA = [ "-----BEGIN CERTIFICATE-----\r\nMIIHAjCCBOqgAwIBAgIJAJVIeKgiEmNTMA0GCSqGSIb3DQEBDQUAMIGYMQswCQYD\r\nVQQGEwJCUjETMBEGA1UECgwKSUNQLUJyYXNpbDE9MDsGA1UECww0SW5zdGl0dXRv\r\nIE5hY2lvbmFsIGRlIFRlY25vbG9naWEgZGEgSW5mb3JtYWNhbyAtIElUSTE1MDMG\r\nA1UEAwwsQXV0b3JpZGFkZSBDZXJ0aWZpY2Fkb3JhIFJhaXogQnJhc2lsZWlyYSB2\r\nMTAwHhcNMjAwMzEyMTkzMTQyWhcNMzIwNzAxMTIwMDU5WjCBjDELMAkGA1UEBhMC\r\nQlIxEzARBgNVBAoMCklDUC1CcmFzaWwxNTAzBgNVBAsMLEF1dG9yaWRhZGUgQ2Vy\r\ndGlmaWNhZG9yYSBSYWl6IEJyYXNpbGVpcmEgdjEwMTEwLwYDVQQDDChBdXRvcmlk\r\nYWRlIENlcnRpZmljYWRvcmEgZG8gU0VSUFJPIFNTTHYxMIICIjANBgkqhkiG9w0B\r\nAQEFAAOCAg8AMIICCgKCAgEA61jQVBX27GVzyZkJuyrEezqjBGdLSJDFRyGdwxbm\r\n8Ntr0AA8blhDaN5ASDOjqDESMA7xF38znfkZWBMLxJ3Ob0271W6G9bqgTwp/svhZ\r\ns91UcbZW6sB7gyxzMTGWLxcFMeBrurM0QpMVsp8hDH5Suv5rfP0YB9brz60k104u\r\nHG625rAcbRKHn7XsWJ1ZUQcwRzx1g0L1NlUKpsk0+eOAxTcVSVRTO33k+n6Gve83\r\n4MXMiG6Orved4isnEvQnl4AecCXOuUuM3vXZ+kdJGTpNy1HOy0coFdKCJSSCxU/y\r\nTbTiAiRJTc8rbvor3I7k7wR4ZDR8alDbW/Sbw1JEMtbQqMOXEOV7iEUIub0/uNT2\r\ng0oM4pu8DAxhIwy2YQCpjfCbzYu2bf1nabuOEQ2B4mFt/zgoxa5FLsM+0IjpCi8u\r\nz9RqLvYFo9pIy5BTi7JMkVfbgqcOv7vkQf3xF7sODdInCVRIbB0R6xpHm+bpitx9\r\nt5ip+Sf24QFlKbjy0gwVAnaEyf/iQF+t8qgcFBO65kyfH/2vs6iYg5TNhFKtjpqQ\r\niTyI7YkRkfTbLFdcgZbiRUUs5TFi0BkS4PAWupO1GgV9sJdk9gm3Z+KNZDgoAnu7\r\nCvhq1JXt6t7qO96WzBx9q9hi7T6eld1VFrV5Ya5kxM9Lgh+XcBDwfnDLI1Yoozbd\r\nMbkCAwEAAaOCAVcwggFTMIGtBgNVHSAEgaUwgaIwTwYGYEwBAYEJMEUwQwYIKwYB\r\nBQUHAgEWN2h0dHBzOi8vcmVwb3NpdG9yaW8uc2VycHJvLmdvdi5ici9kb2NzL2Rw\r\nY3NlcnByb3NzbC5wZGYwTwYGYEwBAgFpMEUwQwYIKwYBBQUHAgEWN2h0dHBzOi8v\r\ncmVwb3NpdG9yaW8uc2VycHJvLmdvdi5ici9kb2NzL2RwY3NlcnByb3NzbC5wZGYw\r\nQAYDVR0fBDkwNzA1oDOgMYYvaHR0cDovL2FjcmFpei5pY3BicmFzaWwuZ292LmJy\r\nL0xDUmFjcmFpenYxMC5jcmwwHwYDVR0jBBgwFoAUdPN+//yfU3rxfOurPqSm2hi6\r\nRWMwHQYDVR0OBBYEFK0WT0vxDL7CiqKFGNcNRiWTIuPNMA8GA1UdEwEB/wQFMAMB\r\nAf8wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBDQUAA4ICAQCDvWkOYakalAHB\r\n3ZcifI9yLyuTtjR8eYXlfDesYr7zMFVlmduVghCgueBMZxmht9BpLq9/ceBWu1q8\r\nsKge5oNNyySPmBJFe+CLjtB7Z1Ljk0Q/7A59lMCDZajojJlSEnH6pdhxA1JD58E0\r\ndGsom3SufuBWxdNfgsvpQNXDoKp48VlkyL4DKFCdJExtzuR5IlcQbB1FrmB5m2zo\r\nGG6j7UdoevmikIv01la+8kyn7CF5aNubRE0cfwxulik5LNM1uLIwfUVwYbbQiB8z\r\nbaLUOS2lU/pYr+seLQ7VBPHps/guGB9hKei/Df49KWjDVplu3+AuZhBHqiK533VJ\r\nf9Uwv3Rvx8FCobT54OCrAVfnFs8F6sM3dPh1u7AbW3Ddpeo4oBH5kBA0feLvLk7v\r\nmOnOq64oPMMoj+g6x0B0v7tGqOrNBZK486MaU/uaJi+omx+Le9EfyIz39BbRYGdV\r\nJvO/9P8vn5XnNXsmqziw08ENLjHcrro48tRm3YX0/BUgoitjMUqyzlKTgQ8UOpfi\r\nXeJzqvxvUMO/HgZK9aknN3WQXWXxIFG01OHsEOTd2Nddqbrth5qmZE+1IxwEH+ys\r\nQQzlV0pnPL5K0bRuPCqvH4Jr0CmwV2PqD6dkjI/Sy77XDkTP8adAuYjIEynBoQ0b\r\ntqY/0rJPT3dztepWAwRHhKbvO1yYkA==\r\n-----END CERTIFICATE-----\r\n", "-----BEGIN CERTIFICATE-----\r\nMIIGrDCCBJSgAwIBAgIJANLVi0S/gZNCMA0GCSqGSIb3DQEBDQUAMIGYMQswCQYD\r\nVQQGEwJCUjETMBEGA1UECgwKSUNQLUJyYXNpbDE9MDsGA1UECww0SW5zdGl0dXRv\r\nIE5hY2lvbmFsIGRlIFRlY25vbG9naWEgZGEgSW5mb3JtYWNhbyAtIElUSTE1MDMG\r\nA1UEAwwsQXV0b3JpZGFkZSBDZXJ0aWZpY2Fkb3JhIFJhaXogQnJhc2lsZWlyYSB2\r\nMTAwHhcNMTkwNzAxMTkxNTU5WhcNMzIwNzAxMTIwMDU5WjCBmDELMAkGA1UEBhMC\r\nQlIxEzARBgNVBAoMCklDUC1CcmFzaWwxPTA7BgNVBAsMNEluc3RpdHV0byBOYWNp\r\nb25hbCBkZSBUZWNub2xvZ2lhIGRhIEluZm9ybWFjYW8gLSBJVEkxNTAzBgNVBAMM\r\nLEF1dG9yaWRhZGUgQ2VydGlmaWNhZG9yYSBSYWl6IEJyYXNpbGVpcmEgdjEwMIIC\r\nIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAk3AxKl1ZtP0pNyjChqO7qNkn\r\n+/sClZeqiV/Kd7KnnbkDbI2y3VWcUG7feCE/deIxot6GH6JXncRG794UZl+4doD0\r\nD0/cEwBd4DvrDSZm0RT40xhmYYOTxZDJxv+coTHdmsT5aNmSkktfjzYX4HQHh/7M\r\nem+kTOpT/3E4K6B7KVs9HkOT7nXx5yU1qYbVWqI0qpJM9mOTSFx8C9HiKcHvLCvt\r\n1ioXKPAmFuHPkayOcXP2MXeb+VRNjWKU4E+L2t5uZPKVx1M/9i1DztlLb4K8OfYg\r\nGaPDUSF1sxnoGk5qZHLleO6KjCpmuQepmgsBvxi2YNO7X2YUwQQx1AXNSolgtkAR\r\n5gt+1WzxhbFUhItQqlhqxgWHefLmiT5T/Ctz/P2v+zSO4efkkIzsi1iwD+ypZvM2\r\nlnIvB24RcSN6jzmCahLPX4CwjwIK6JsSoMVxIhpZHCguUP4LXqP8IWUZ6WgS/4zB\r\n7B9E0EICl2rM1PRy+6ulv+ZOW256e8a0pijUB+hXM1msUq9L92476FAAX8va3sP7\r\n+Uut94+bGHmubcTLImWUPrxNT7QyrvE3FyHicfiHioeFL2oV4cXTLZrEq2wS8R4P\r\nKPdSzNn5Z9e2uMEGYQaSNO+OwvVycpIhOBOqrm12wJ9ZhWKtM5UOo34/o37r5ZBI\r\nTYXAGbhqQDB9mWXwH+0CAwEAAaOB9jCB8zBOBgNVHSAERzBFMEMGBWBMAQEAMDow\r\nOAYIKwYBBQUHAgEWLGh0dHA6Ly9hY3JhaXouaWNwYnJhc2lsLmdvdi5ici9EUENh\r\nY3JhaXoucGRmMEAGA1UdHwQ5MDcwNaAzoDGGL2h0dHA6Ly9hY3JhaXouaWNwYnJh\r\nc2lsLmdvdi5ici9MQ1JhY3JhaXp2MTAuY3JsMB8GA1UdIwQYMBaAFHTzfv/8n1N6\r\n8Xzrqz6kptoYukVjMB0GA1UdDgQWBBR0837//J9TevF866s+pKbaGLpFYzAPBgNV\r\nHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQ0FAAOCAgEA\r\neCNhBSuy/Ih/T+1VOtAJju85SrtoE3vET1qXASpmjQllDHG/ph7VFNRAkC+gha+B\r\nCbjoA5oJ/8wwl+Qdp1KGz6nXXFTLx3osU+kjm0srmBf9nyXHPqvFyvBeB0A7sYb7\r\nTmII9GKD20oCxsdkccR/oE/JuTaNnGq0GYZ2aDb5v62uLi21Y6P9UBiTxZqQ4ojW\r\nET6kXNjlK238jpXv17FR8Sg3VusCvX7Q8eJkavvHHZDeWck2fSA+ycAc2JeL2Z0B\r\nMSxGWpH32WM9J8+6XqCJUXHiWEV0zCE8wDYiYC+047pTxQI/gB/FcU7jvylh98DJ\r\nkQPHd/Tp6Og3ynlDA9n9uBbxYHVRZs9vsZ/7xTFaxRe+zk8dhgKgZ/3RrcMFB570\r\n2t8LFbyuUE/kQVY6rZ0QJ9qMWQ7VPLRwRhiMeU3k8WDJb/tBbOXHBqldTbWyQ+mp\r\nMEDWhbrzE/IED82wAuO23Tb05cYk2xC7+Izef8fSc3XdJDuPSbcDpWukzyCDtSEH\r\nisLiGEtIbYRiPsF3czlQPsnIEVoTTCWxHCH1zYR6zScSv18Qh69qVe2J40K5jZoP\r\nGEOhq/oKhVJQAdvAFW5Odp7mF3Tk9nivjjsctJSxY26LFiV5GRV+07SSse4ti0aO\r\njO5PLg5SWjfcOtBG2rz02EIvQAmLcb0kGBtfdj0lW/w=\r\n-----END CERTIFICATE-----\r\n" ];
1
+ let tls = require("tls"), CA = [ "-----BEGIN CERTIFICATE-----\r\nMIIHAjCCBOqgAwIBAgIJAJVIeKgiEmNTMA0GCSqGSIb3DQEBDQUAMIGYMQswCQYD\r\nVQQGEwJCUjETMBEGA1UECgwKSUNQLUJyYXNpbDE9MDsGA1UECww0SW5zdGl0dXRv\r\nIE5hY2lvbmFsIGRlIFRlY25vbG9naWEgZGEgSW5mb3JtYWNhbyAtIElUSTE1MDMG\r\nA1UEAwwsQXV0b3JpZGFkZSBDZXJ0aWZpY2Fkb3JhIFJhaXogQnJhc2lsZWlyYSB2\r\nMTAwHhcNMjAwMzEyMTkzMTQyWhcNMzIwNzAxMTIwMDU5WjCBjDELMAkGA1UEBhMC\r\nQlIxEzARBgNVBAoMCklDUC1CcmFzaWwxNTAzBgNVBAsMLEF1dG9yaWRhZGUgQ2Vy\r\ndGlmaWNhZG9yYSBSYWl6IEJyYXNpbGVpcmEgdjEwMTEwLwYDVQQDDChBdXRvcmlk\r\nYWRlIENlcnRpZmljYWRvcmEgZG8gU0VSUFJPIFNTTHYxMIICIjANBgkqhkiG9w0B\r\nAQEFAAOCAg8AMIICCgKCAgEA61jQVBX27GVzyZkJuyrEezqjBGdLSJDFRyGdwxbm\r\n8Ntr0AA8blhDaN5ASDOjqDESMA7xF38znfkZWBMLxJ3Ob0271W6G9bqgTwp/svhZ\r\ns91UcbZW6sB7gyxzMTGWLxcFMeBrurM0QpMVsp8hDH5Suv5rfP0YB9brz60k104u\r\nHG625rAcbRKHn7XsWJ1ZUQcwRzx1g0L1NlUKpsk0+eOAxTcVSVRTO33k+n6Gve83\r\n4MXMiG6Orved4isnEvQnl4AecCXOuUuM3vXZ+kdJGTpNy1HOy0coFdKCJSSCxU/y\r\nTbTiAiRJTc8rbvor3I7k7wR4ZDR8alDbW/Sbw1JEMtbQqMOXEOV7iEUIub0/uNT2\r\ng0oM4pu8DAxhIwy2YQCpjfCbzYu2bf1nabuOEQ2B4mFt/zgoxa5FLsM+0IjpCi8u\r\nz9RqLvYFo9pIy5BTi7JMkVfbgqcOv7vkQf3xF7sODdInCVRIbB0R6xpHm+bpitx9\r\nt5ip+Sf24QFlKbjy0gwVAnaEyf/iQF+t8qgcFBO65kyfH/2vs6iYg5TNhFKtjpqQ\r\niTyI7YkRkfTbLFdcgZbiRUUs5TFi0BkS4PAWupO1GgV9sJdk9gm3Z+KNZDgoAnu7\r\nCvhq1JXt6t7qO96WzBx9q9hi7T6eld1VFrV5Ya5kxM9Lgh+XcBDwfnDLI1Yoozbd\r\nMbkCAwEAAaOCAVcwggFTMIGtBgNVHSAEgaUwgaIwTwYGYEwBAYEJMEUwQwYIKwYB\r\nBQUHAgEWN2h0dHBzOi8vcmVwb3NpdG9yaW8uc2VycHJvLmdvdi5ici9kb2NzL2Rw\r\nY3NlcnByb3NzbC5wZGYwTwYGYEwBAgFpMEUwQwYIKwYBBQUHAgEWN2h0dHBzOi8v\r\ncmVwb3NpdG9yaW8uc2VycHJvLmdvdi5ici9kb2NzL2RwY3NlcnByb3NzbC5wZGYw\r\nQAYDVR0fBDkwNzA1oDOgMYYvaHR0cDovL2FjcmFpei5pY3BicmFzaWwuZ292LmJy\r\nL0xDUmFjcmFpenYxMC5jcmwwHwYDVR0jBBgwFoAUdPN+//yfU3rxfOurPqSm2hi6\r\nRWMwHQYDVR0OBBYEFK0WT0vxDL7CiqKFGNcNRiWTIuPNMA8GA1UdEwEB/wQFMAMB\r\nAf8wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBDQUAA4ICAQCDvWkOYakalAHB\r\n3ZcifI9yLyuTtjR8eYXlfDesYr7zMFVlmduVghCgueBMZxmht9BpLq9/ceBWu1q8\r\nsKge5oNNyySPmBJFe+CLjtB7Z1Ljk0Q/7A59lMCDZajojJlSEnH6pdhxA1JD58E0\r\ndGsom3SufuBWxdNfgsvpQNXDoKp48VlkyL4DKFCdJExtzuR5IlcQbB1FrmB5m2zo\r\nGG6j7UdoevmikIv01la+8kyn7CF5aNubRE0cfwxulik5LNM1uLIwfUVwYbbQiB8z\r\nbaLUOS2lU/pYr+seLQ7VBPHps/guGB9hKei/Df49KWjDVplu3+AuZhBHqiK533VJ\r\nf9Uwv3Rvx8FCobT54OCrAVfnFs8F6sM3dPh1u7AbW3Ddpeo4oBH5kBA0feLvLk7v\r\nmOnOq64oPMMoj+g6x0B0v7tGqOrNBZK486MaU/uaJi+omx+Le9EfyIz39BbRYGdV\r\nJvO/9P8vn5XnNXsmqziw08ENLjHcrro48tRm3YX0/BUgoitjMUqyzlKTgQ8UOpfi\r\nXeJzqvxvUMO/HgZK9aknN3WQXWXxIFG01OHsEOTd2Nddqbrth5qmZE+1IxwEH+ys\r\nQQzlV0pnPL5K0bRuPCqvH4Jr0CmwV2PqD6dkjI/Sy77XDkTP8adAuYjIEynBoQ0b\r\ntqY/0rJPT3dztepWAwRHhKbvO1yYkA==\r\n-----END CERTIFICATE-----\r\n", "-----BEGIN CERTIFICATE-----\r\nMIIGrDCCBJSgAwIBAgIJANLVi0S/gZNCMA0GCSqGSIb3DQEBDQUAMIGYMQswCQYD\r\nVQQGEwJCUjETMBEGA1UECgwKSUNQLUJyYXNpbDE9MDsGA1UECww0SW5zdGl0dXRv\r\nIE5hY2lvbmFsIGRlIFRlY25vbG9naWEgZGEgSW5mb3JtYWNhbyAtIElUSTE1MDMG\r\nA1UEAwwsQXV0b3JpZGFkZSBDZXJ0aWZpY2Fkb3JhIFJhaXogQnJhc2lsZWlyYSB2\r\nMTAwHhcNMTkwNzAxMTkxNTU5WhcNMzIwNzAxMTIwMDU5WjCBmDELMAkGA1UEBhMC\r\nQlIxEzARBgNVBAoMCklDUC1CcmFzaWwxPTA7BgNVBAsMNEluc3RpdHV0byBOYWNp\r\nb25hbCBkZSBUZWNub2xvZ2lhIGRhIEluZm9ybWFjYW8gLSBJVEkxNTAzBgNVBAMM\r\nLEF1dG9yaWRhZGUgQ2VydGlmaWNhZG9yYSBSYWl6IEJyYXNpbGVpcmEgdjEwMIIC\r\nIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAk3AxKl1ZtP0pNyjChqO7qNkn\r\n+/sClZeqiV/Kd7KnnbkDbI2y3VWcUG7feCE/deIxot6GH6JXncRG794UZl+4doD0\r\nD0/cEwBd4DvrDSZm0RT40xhmYYOTxZDJxv+coTHdmsT5aNmSkktfjzYX4HQHh/7M\r\nem+kTOpT/3E4K6B7KVs9HkOT7nXx5yU1qYbVWqI0qpJM9mOTSFx8C9HiKcHvLCvt\r\n1ioXKPAmFuHPkayOcXP2MXeb+VRNjWKU4E+L2t5uZPKVx1M/9i1DztlLb4K8OfYg\r\nGaPDUSF1sxnoGk5qZHLleO6KjCpmuQepmgsBvxi2YNO7X2YUwQQx1AXNSolgtkAR\r\n5gt+1WzxhbFUhItQqlhqxgWHefLmiT5T/Ctz/P2v+zSO4efkkIzsi1iwD+ypZvM2\r\nlnIvB24RcSN6jzmCahLPX4CwjwIK6JsSoMVxIhpZHCguUP4LXqP8IWUZ6WgS/4zB\r\n7B9E0EICl2rM1PRy+6ulv+ZOW256e8a0pijUB+hXM1msUq9L92476FAAX8va3sP7\r\n+Uut94+bGHmubcTLImWUPrxNT7QyrvE3FyHicfiHioeFL2oV4cXTLZrEq2wS8R4P\r\nKPdSzNn5Z9e2uMEGYQaSNO+OwvVycpIhOBOqrm12wJ9ZhWKtM5UOo34/o37r5ZBI\r\nTYXAGbhqQDB9mWXwH+0CAwEAAaOB9jCB8zBOBgNVHSAERzBFMEMGBWBMAQEAMDow\r\nOAYIKwYBBQUHAgEWLGh0dHA6Ly9hY3JhaXouaWNwYnJhc2lsLmdvdi5ici9EUENh\r\nY3JhaXoucGRmMEAGA1UdHwQ5MDcwNaAzoDGGL2h0dHA6Ly9hY3JhaXouaWNwYnJh\r\nc2lsLmdvdi5ici9MQ1JhY3JhaXp2MTAuY3JsMB8GA1UdIwQYMBaAFHTzfv/8n1N6\r\n8Xzrqz6kptoYukVjMB0GA1UdDgQWBBR0837//J9TevF866s+pKbaGLpFYzAPBgNV\r\nHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQ0FAAOCAgEA\r\neCNhBSuy/Ih/T+1VOtAJju85SrtoE3vET1qXASpmjQllDHG/ph7VFNRAkC+gha+B\r\nCbjoA5oJ/8wwl+Qdp1KGz6nXXFTLx3osU+kjm0srmBf9nyXHPqvFyvBeB0A7sYb7\r\nTmII9GKD20oCxsdkccR/oE/JuTaNnGq0GYZ2aDb5v62uLi21Y6P9UBiTxZqQ4ojW\r\nET6kXNjlK238jpXv17FR8Sg3VusCvX7Q8eJkavvHHZDeWck2fSA+ycAc2JeL2Z0B\r\nMSxGWpH32WM9J8+6XqCJUXHiWEV0zCE8wDYiYC+047pTxQI/gB/FcU7jvylh98DJ\r\nkQPHd/Tp6Og3ynlDA9n9uBbxYHVRZs9vsZ/7xTFaxRe+zk8dhgKgZ/3RrcMFB570\r\n2t8LFbyuUE/kQVY6rZ0QJ9qMWQ7VPLRwRhiMeU3k8WDJb/tBbOXHBqldTbWyQ+mp\r\nMEDWhbrzE/IED82wAuO23Tb05cYk2xC7+Izef8fSc3XdJDuPSbcDpWukzyCDtSEH\r\nisLiGEtIbYRiPsF3czlQPsnIEVoTTCWxHCH1zYR6zScSv18Qh69qVe2J40K5jZoP\r\nGEOhq/oKhVJQAdvAFW5Odp7mF3Tk9nivjjsctJSxY26LFiV5GRV+07SSse4ti0aO\r\njO5PLg5SWjfcOtBG2rz02EIvQAmLcb0kGBtfdj0lW/w=\r\n-----END CERTIFICATE-----\r\n" ], RAIZES_PADRAO = "function" == typeof tls.getCACertificates ? tls.getCACertificates("default") : tls.rootCertificates, CA_PADRAO = [ ...RAIZES_PADRAO, ...CA ];
2
2
 
3
3
  module.exports = {
4
- CA: CA
4
+ CA: CA,
5
+ CA_PADRAO: CA_PADRAO
5
6
  };
package/lib/env/index.js CHANGED
@@ -1,10 +1,21 @@
1
- let CA = require("./ca").CA, DISTRIBUICAO = require("./distribuicao").DISTRIBUICAO, EVENTOS = require("./evento").EVENTOS, RECEPCAO = require("./recepcao").RECEPCAO, CODIGOS_UF = require("./uf").CODIGOS_UF, VERSION = require("./version").VERSION, ZONES = require("./zone").ZONES;
1
+ let {
2
+ CA,
3
+ CA_PADRAO
4
+ } = require("./ca"), DISTRIBUICAO = require("./distribuicao").DISTRIBUICAO, EVENTOS = require("./evento").EVENTOS, {
5
+ EVENTOS_NFSE,
6
+ NFSE_ADN,
7
+ NFSE_SEFIN
8
+ } = require("./nfse"), RECEPCAO = require("./recepcao").RECEPCAO, CODIGOS_UF = require("./uf").CODIGOS_UF, VERSION = require("./version").VERSION, ZONES = require("./zone").ZONES;
2
9
 
3
10
  module.exports = {
4
11
  CA: CA,
12
+ CA_PADRAO: CA_PADRAO,
5
13
  CODIGOS_UF: CODIGOS_UF,
6
14
  DISTRIBUICAO: DISTRIBUICAO,
7
15
  EVENTOS: EVENTOS,
16
+ EVENTOS_NFSE: EVENTOS_NFSE,
17
+ NFSE_ADN: NFSE_ADN,
18
+ NFSE_SEFIN: NFSE_SEFIN,
8
19
  RECEPCAO: RECEPCAO,
9
20
  VERSION: VERSION,
10
21
  ZONES: ZONES
@@ -0,0 +1,24 @@
1
+ let NFSE_ADN = {
2
+ 1: "https://adn.nfse.gov.br/contribuintes",
3
+ 2: "https://adn.producaorestrita.nfse.gov.br/contribuintes"
4
+ }, NFSE_SEFIN = {
5
+ 1: "https://sefin.nfse.gov.br/SefinNacional",
6
+ 2: "https://sefin.producaorestrita.nfse.gov.br/SefinNacional"
7
+ }, EVENTOS_NFSE = {
8
+ 203202: {
9
+ codigo: "203202",
10
+ elemento: "e203202",
11
+ xDesc: "Manifestação de NFS-e - Confirmação do Tomador"
12
+ },
13
+ 203206: {
14
+ codigo: "203206",
15
+ elemento: "e203206",
16
+ xDesc: "Manifestação de NFS-e - Rejeição do Tomador"
17
+ }
18
+ };
19
+
20
+ module.exports = {
21
+ EVENTOS_NFSE: EVENTOS_NFSE,
22
+ NFSE_ADN: NFSE_ADN,
23
+ NFSE_SEFIN: NFSE_SEFIN
24
+ };
@@ -1,3 +1,3 @@
1
1
  module.exports = {
2
- VERSION: "0.18.0"
2
+ VERSION: "0.20.0"
3
3
  };
@@ -1,5 +1,5 @@
1
1
  let {
2
- CA,
2
+ CA_PADRAO,
3
3
  DISTRIBUICAO
4
4
  } = require("../env"), DistribuicaoSchema = require("../schemas").DistribuicaoSchema, SefazService = require("../services/sefaz-service"), {
5
5
  Gzip,
@@ -14,7 +14,7 @@ class DistribuicaoHelper {
14
14
  };
15
15
  return await new SefazService({
16
16
  baseURL: t,
17
- ca: CA,
17
+ ca: CA_PADRAO,
18
18
  cert: r.cert,
19
19
  key: r.key,
20
20
  tpAmb: r.tpAmb,
@@ -0,0 +1,128 @@
1
+ let {
2
+ CA_PADRAO,
3
+ NFSE_ADN
4
+ } = require("../env"), SefazService = require("../services/sefaz-service"), {
5
+ Gzip,
6
+ Xml
7
+ } = require("../util"), PAPEIS = [ [ "toma", "tomador" ], [ "prest", "prestador" ], [ "interm", "intermediario" ] ];
8
+
9
+ function ler(e, t) {
10
+ return t.reduce((e, t) => e && "object" == typeof e ? e[t] : void 0, e);
11
+ }
12
+
13
+ function texto(e) {
14
+ return null == e ? "" : String(e);
15
+ }
16
+
17
+ function normalizarMensagens(e) {
18
+ return Array.isArray(e) ? e.filter(e => e && "object" == typeof e).map(e => ({
19
+ codigo: texto(e.Codigo),
20
+ descricao: texto(e.Descricao),
21
+ complemento: texto(e.Complemento)
22
+ })) : [];
23
+ }
24
+
25
+ class DistribuicaoNFSeHelper {
26
+ static async enviarConsulta(e, t) {
27
+ return await new SefazService({
28
+ baseURL: NFSE_ADN[t.tpAmb],
29
+ ca: CA_PADRAO,
30
+ cert: t.cert,
31
+ key: t.key,
32
+ tpAmb: t.tpAmb,
33
+ requestOptions: t.requestOptions,
34
+ httpsOptions: t.httpsOptions
35
+ }).request(e);
36
+ }
37
+ static montarRequest(e) {
38
+ var t, r = {
39
+ Accept: "application/json"
40
+ };
41
+ return void 0 !== e.chNFSe ? {
42
+ method: "GET",
43
+ url: `/NFSe/${e.chNFSe}/Eventos`,
44
+ headers: r,
45
+ responseType: "text"
46
+ } : {
47
+ method: "GET",
48
+ url: "/DFe/" + ((t = void 0 !== e.nsu) ? (BigInt(e.nsu) - BigInt(1)).toString() : e.ultNSU),
49
+ params: {
50
+ lote: !t,
51
+ cnpjConsulta: e.cnpj
52
+ },
53
+ headers: r,
54
+ responseType: "text"
55
+ };
56
+ }
57
+ static async montarResponse(e, t) {
58
+ let r;
59
+ try {
60
+ r = JSON.parse(e);
61
+ } catch (e) {
62
+ return null;
63
+ }
64
+ if (!r || "object" != typeof r || Array.isArray(r) || !r.StatusProcessamento) return null;
65
+ var o, e = Array.isArray(r.LoteDFe) ? r.LoteDFe : [], a = [], s = [];
66
+ for (o of await Promise.all(e.map(e => DistribuicaoNFSeHelper.abrirArquivoXml(e, t)))) (o.error ? s : a).push(o);
67
+ return {
68
+ statusProcessamento: texto(r.StatusProcessamento),
69
+ tipoAmbiente: texto(r.TipoAmbiente),
70
+ versaoAplicativo: texto(r.VersaoAplicativo),
71
+ dataHoraProcessamento: texto(r.DataHoraProcessamento),
72
+ alertas: normalizarMensagens(r.Alertas),
73
+ erros: normalizarMensagens(r.Erros),
74
+ documentos: a,
75
+ documentosErros: s
76
+ };
77
+ }
78
+ static async abrirArquivoXml(e, t) {
79
+ var e = e && "object" == typeof e ? e : {}, r = texto(e.NSU), o = texto(e.ChaveAcesso), a = texto(e.TipoDocumento);
80
+ if (!e.ArquivoXml) return {
81
+ nsu: r,
82
+ chaveAcesso: o,
83
+ tipoDocumento: a,
84
+ error: "ArquivoXml sem conteúdo."
85
+ };
86
+ let s;
87
+ try {
88
+ s = await Gzip.unzip(e.ArquivoXml);
89
+ } catch (e) {
90
+ return {
91
+ nsu: r,
92
+ chaveAcesso: o,
93
+ tipoDocumento: a,
94
+ error: "Falha ao descompactar o ArquivoXml: " + e.message
95
+ };
96
+ }
97
+ let i;
98
+ try {
99
+ i = Xml.xmlToJson(s);
100
+ } catch (e) {
101
+ return {
102
+ nsu: r,
103
+ chaveAcesso: o,
104
+ tipoDocumento: a,
105
+ error: "Falha ao interpretar o XML do ArquivoXml: " + e.message
106
+ };
107
+ }
108
+ return {
109
+ nsu: r,
110
+ chaveAcesso: o,
111
+ tipoDocumento: a,
112
+ tipoEvento: texto(e.TipoEvento),
113
+ dataHoraGeracao: texto(e.DataHoraGeracao),
114
+ papel: DistribuicaoNFSeHelper.calcularPapel(a, i, t),
115
+ xml: s,
116
+ json: i
117
+ };
118
+ }
119
+ static calcularPapel(e, t, r) {
120
+ if ("NFSE" === e) {
121
+ var o, a, s = ler(t, [ "NFSe", "infNFSe", "DPS", "infDPS" ]);
122
+ for ([ o, a ] of PAPEIS) if (ler(s, [ o, "CNPJ" ]) === r) return a;
123
+ }
124
+ return "";
125
+ }
126
+ }
127
+
128
+ module.exports = Object.freeze(DistribuicaoNFSeHelper);
@@ -1,7 +1,10 @@
1
- let DistribuicaoHelper = require("./distribuicaoDFe-helper"), RecepcaoHelper = require("./recepcaoEvento-helper"), RetornoHelper = require("./retorno-helper"), helper = Object.freeze({
1
+ let DistribuicaoHelper = require("./distribuicaoDFe-helper"), DistribuicaoNFSeHelper = require("./distribuicaoNFSe-helper"), ManifestacaoNFSeHelper = require("./manifestacaoNFSe-helper"), RecepcaoHelper = require("./recepcaoEvento-helper"), RetornoHelper = require("./retorno-helper"), RetornoNfseHelper = require("./retornoNfse-helper"), helper = Object.freeze({
2
2
  DistribuicaoHelper: DistribuicaoHelper,
3
+ DistribuicaoNFSeHelper: DistribuicaoNFSeHelper,
4
+ ManifestacaoNFSeHelper: ManifestacaoNFSeHelper,
3
5
  RecepcaoHelper: RecepcaoHelper,
4
- RetornoHelper: RetornoHelper
6
+ RetornoHelper: RetornoHelper,
7
+ RetornoNfseHelper: RetornoNfseHelper
5
8
  });
6
9
 
7
10
  module.exports = helper;
@@ -0,0 +1,105 @@
1
+ let {
2
+ CA_PADRAO,
3
+ NFSE_SEFIN
4
+ } = require("../env"), ManifestacaoNFSeSchema = require("../schemas").ManifestacaoNFSeSchema, SefazService = require("../services/sefaz-service"), {
5
+ Assinatura,
6
+ Gzip,
7
+ Xml
8
+ } = require("../util");
9
+
10
+ function texto(e) {
11
+ return null == e ? "" : String(e);
12
+ }
13
+
14
+ function normalizarMensagens(e) {
15
+ return (Array.isArray(e) ? e : e ? [ e ] : []).filter(e => e && "object" == typeof e).map(e => ({
16
+ codigo: texto(e.codigo),
17
+ descricao: texto(e.descricao),
18
+ complemento: texto(e.complemento)
19
+ }));
20
+ }
21
+
22
+ class ManifestacaoNFSeHelper {
23
+ static async enviarEvento(e, t) {
24
+ return await new SefazService({
25
+ baseURL: NFSE_SEFIN[t.tpAmb],
26
+ ca: CA_PADRAO,
27
+ cert: t.cert,
28
+ key: t.key,
29
+ tpAmb: t.tpAmb,
30
+ requestOptions: t.requestOptions,
31
+ httpsOptions: t.httpsOptions
32
+ }).request(e);
33
+ }
34
+ static async montarRequest(e) {
35
+ var t = ManifestacaoNFSeSchema.montarSchema(e), t = Xml.jsonToXml(t), t = '<?xml version="1.0" encoding="UTF-8"?>' + Assinatura.assinarXml(e.cert, e.key, t, "infPedReg"), a = await Gzip.zip(t);
36
+ return {
37
+ reqXml: t,
38
+ config: {
39
+ method: "POST",
40
+ url: `/nfse/${e.chNFSe}/eventos`,
41
+ data: JSON.stringify({
42
+ pedidoRegistroEventoXmlGZipB64: a
43
+ }),
44
+ headers: {
45
+ Accept: "application/json",
46
+ "Content-Type": "application/json"
47
+ },
48
+ responseType: "text"
49
+ }
50
+ };
51
+ }
52
+ static async montarResponse(e) {
53
+ let t;
54
+ try {
55
+ t = JSON.parse(e);
56
+ } catch (e) {
57
+ return {
58
+ json: null
59
+ };
60
+ }
61
+ var a, r;
62
+ return t && "object" == typeof t && !Array.isArray(t) && ("eventoXmlGZipB64" in t || "erro" in t || "erros" in t) ? (e = {
63
+ tipoAmbiente: texto(t.tipoAmbiente),
64
+ versaoAplicativo: texto(t.versaoAplicativo),
65
+ dataHoraProcessamento: texto(t.dataHoraProcessamento),
66
+ alertas: normalizarMensagens(t.alertas),
67
+ erros: normalizarMensagens(t.erros || t.erro),
68
+ evento: {}
69
+ }, "eventoXmlGZipB64" in t && ({
70
+ evento: a,
71
+ falha: r
72
+ } = await ManifestacaoNFSeHelper.abrirEvento(t.eventoXmlGZipB64), e.evento = a,
73
+ r) ? {
74
+ json: e,
75
+ falha: r
76
+ } : {
77
+ json: e
78
+ }) : {
79
+ json: null
80
+ };
81
+ }
82
+ static async abrirEvento(e) {
83
+ var t = "Falha ao abrir o evento retornado: ";
84
+ if (!e) return {
85
+ evento: {},
86
+ falha: t + "eventoXmlGZipB64 sem conteúdo."
87
+ };
88
+ try {
89
+ var a = await Gzip.unzip(e);
90
+ return {
91
+ evento: {
92
+ xml: a,
93
+ json: Xml.xmlToJson(a)
94
+ }
95
+ };
96
+ } catch (e) {
97
+ return {
98
+ evento: {},
99
+ falha: t + e.message
100
+ };
101
+ }
102
+ }
103
+ }
104
+
105
+ module.exports = Object.freeze(ManifestacaoNFSeHelper);
@@ -1,5 +1,5 @@
1
1
  let {
2
- CA,
2
+ CA_PADRAO,
3
3
  RECEPCAO
4
4
  } = require("../env"), RecepcaoSchema = require("../schemas").RecepcaoSchema, SefazService = require("../services/sefaz-service"), {
5
5
  Assinatura,
@@ -14,7 +14,7 @@ class RecepcaoHelper {
14
14
  };
15
15
  return await new SefazService({
16
16
  baseURL: o,
17
- ca: CA,
17
+ ca: CA_PADRAO,
18
18
  cert: t.cert,
19
19
  key: t.key,
20
20
  tpAmb: t.tpAmb,
@@ -1,17 +1,24 @@
1
1
  class RetornoHelper {
2
2
  static montarRetorno(r) {
3
- var {
3
+ var e, t, {
4
4
  json: r,
5
- data: e,
6
- retornoSefaz: t
7
- } = r, e = {
5
+ data: a,
6
+ retornoSefaz: o
7
+ } = r, a = {
8
8
  data: r,
9
- reqXml: e,
10
- resXml: t.data,
11
- status: t.status
9
+ reqXml: a,
10
+ resXml: o.data,
11
+ status: o.status
12
12
  };
13
- return r.error && (e.data = {}, e.error = r.error), 2 < Math.floor(t.status / 100) && !r.error && (e.data = {},
14
- e.error = t.data), e;
13
+ return o.transportError ? ({
14
+ code: e,
15
+ message: t
16
+ } = o.transportError, a.data = {}, a.error = `Falha de transporte (${e}): ` + t,
17
+ a.transportError = {
18
+ code: e,
19
+ message: t
20
+ }) : (r.error && (a.data = {}, a.error = r.error), 2 < Math.floor(o.status / 100) && !r.error && (a.data = {},
21
+ a.error = o.data)), a;
15
22
  }
16
23
  }
17
24
 
@@ -0,0 +1,31 @@
1
+ let RESPOSTA_INESPERADA = {
2
+ ADN: "Resposta inesperada do ADN",
3
+ SEFIN: "Resposta inesperada da SEFIN"
4
+ };
5
+
6
+ class RetornoNfseHelper {
7
+ static montarRetorno(r) {
8
+ var {
9
+ json: r,
10
+ retorno: e,
11
+ servico: o = "ADN",
12
+ reqXml: s,
13
+ falha: a
14
+ } = r, t = e.status, n = {
15
+ data: r || {}
16
+ }, s = (void 0 !== s && (n.reqXml = s), n.resBody = e.data || "", n.status = t,
17
+ RESPOSTA_INESPERADA[o] + ` (HTTP ${t}).`);
18
+ return e.transportError ? ({
19
+ code: o,
20
+ message: e
21
+ } = e.transportError, n.data = {}, n.error = `Falha de transporte (${o}): ` + e,
22
+ n.transportError = {
23
+ code: o,
24
+ message: e
25
+ }) : r ? "NENHUM_DOCUMENTO_LOCALIZADO" !== r.statusProcessamento && (o = Array.isArray(r.erros) ? r.erros : [],
26
+ 2 !== Math.floor(t / 100) || "REJEICAO" === r.statusProcessamento || 0 < o.length ? n.error = o.length ? o.map(r => r.codigo + ": " + r.descricao).join("; ") : s : a && (n.error = a)) : n.error = s,
27
+ n;
28
+ }
29
+ }
30
+
31
+ module.exports = Object.freeze(RetornoNfseHelper);
package/lib/index.js CHANGED
@@ -1,12 +1,24 @@
1
- let DistribuicaoDFe = require("./apis/distribuicaoDFe-api"), RecepcaoEvento = require("./apis/recepcaoEvento-api");
1
+ let DistribuicaoDFe = require("./apis/distribuicaoDFe-api"), DistribuicaoNFSe = require("./apis/distribuicaoNFSe-api"), ManifestacaoNFSe = require("./apis/manifestacaoNFSe-api"), RecepcaoEvento = require("./apis/recepcaoEvento-api"), env = require("./env"), CA_ICP_BRASIL = Object.freeze(env.CA), CA_PADRAO = Object.freeze(env.CA_PADRAO);
2
2
 
3
3
  module.exports = {
4
+ CA_ICP_BRASIL: CA_ICP_BRASIL,
5
+ CA_PADRAO: CA_PADRAO,
4
6
  DistribuicaoDFe: DistribuicaoDFe,
7
+ DistribuicaoNFSe: DistribuicaoNFSe,
8
+ ManifestacaoNFSe: ManifestacaoNFSe,
5
9
  RecepcaoEvento: RecepcaoEvento
6
10
  }, module.exports.default = {
11
+ CA_ICP_BRASIL: CA_ICP_BRASIL,
12
+ CA_PADRAO: CA_PADRAO,
7
13
  DistribuicaoDFe: DistribuicaoDFe,
14
+ DistribuicaoNFSe: DistribuicaoNFSe,
15
+ ManifestacaoNFSe: ManifestacaoNFSe,
8
16
  RecepcaoEvento: RecepcaoEvento
9
17
  }, module.exports.mde = {
18
+ CA_ICP_BRASIL: CA_ICP_BRASIL,
19
+ CA_PADRAO: CA_PADRAO,
10
20
  DistribuicaoDFe: DistribuicaoDFe,
21
+ DistribuicaoNFSe: DistribuicaoNFSe,
22
+ ManifestacaoNFSe: ManifestacaoNFSe,
11
23
  RecepcaoEvento: RecepcaoEvento
12
24
  };
@@ -1,5 +1,6 @@
1
- let DistribuicaoSchema = require("./distribuicaoDFe-schema"), RecepcaoSchema = require("./recepcaoEvento-schema"), schema = Object.freeze({
1
+ let DistribuicaoSchema = require("./distribuicaoDFe-schema"), ManifestacaoNFSeSchema = require("./manifestacaoNFSe-schema"), RecepcaoSchema = require("./recepcaoEvento-schema"), schema = Object.freeze({
2
2
  DistribuicaoSchema: DistribuicaoSchema,
3
+ ManifestacaoNFSeSchema: ManifestacaoNFSeSchema,
3
4
  RecepcaoSchema: RecepcaoSchema
4
5
  });
5
6
 
@@ -0,0 +1,19 @@
1
+ class ManifestacaoNFSeSchema {
2
+ static montarSchema(e) {
3
+ var o = {
4
+ xDesc: e.evento.xDesc
5
+ }, t = (e.cMotivo && (o.cMotivo = e.cMotivo), e.xMotivo && (o.xMotivo = e.xMotivo),
6
+ {});
7
+ return t.tpAmb = e.tpAmb, t.verAplic = e.verAplic, t.dhEvento = e.dhEvento,
8
+ t.CNPJAutor = e.cnpj, t.chNFSe = e.chNFSe, t[e.evento.elemento] = o, t["@_Id"] = "PRE" + e.chNFSe + e.evento.codigo,
9
+ {
10
+ pedRegEvento: {
11
+ infPedReg: t,
12
+ "@_xmlns": "http://www.sped.fazenda.gov.br/nfse",
13
+ "@_versao": "1.01"
14
+ }
15
+ };
16
+ }
17
+ }
18
+
19
+ module.exports = Object.freeze(ManifestacaoNFSeSchema);